質問が抽象的ですみませんが、質問させて頂きますので
宜しくお願いします。
(まだVBAの日が浅い者です。)
・Excelにて障害管理表というものを作成しています。(sheet1に)
・発生日時や障害内容などが列ごとに管理されている表です。
・各項目名がA3~Y3で各データがA4~Y60まで入力されています。)
・今後も障害が発生することにより、行数が増えていきます。
・sheet2について
・マクロ用の専用シートにしています。
・コマンドボタンを作成し、そこにマクロ文を挿入しています。
・マクロ文の内容は、sheet1の[F列:発生日時]をキーにして、
sheet2の「セルA1→開始年月]「セルB2→終了年月]を入力して
コマンドボタンを押す
・sheet1よりsheet3に指定した期間内のみデータを表示させる。
というのが大筋の内容です。
大体うまく行きましたが、1つだけ問題点が出ました。
・[sheet1のP列]には対応内容のデータが入力されています。
・sheet3のP列にほぼコピーは出来たのですが、2件ほどが
sheet3のP列に反映されず、空白のままとなってしまいます。
・調べてみると、2件ともかなりの文字数がsheet1のP列に入力されていました。
(実際は)
マクロ文を実行すると、下記のエラーが出て処理がSTOPしてしまいます。
「実行時エラー'1004':
アプリケーション定義またはオブジェクト定義のエラーです。」
↓
(P列の長い文字数をsheet1~sheet3へコピーする所です。
ですので、「On Error GoTo 0~On Error Resume Next」コマンドを使用してエラーを吹っ飛ばして処理を続行しています。(2件は反映されませんが。)
・シート間でセル内容をコピーする時の文字数の限界ってあるのでしょうか?
・また、どのようにすれば解消されるでしょうか?
・因みに、sheet1の例の2件の文字数をかなり削除したらうまく行きました。)
・sheet1の例の2件の文字数を削らず、sheet3のP列の文字を小さく設定してもセルを最大に広げてもダメでした。)
長くなって申し訳ありませんが宜しくお願い致します。
No.2ベストアンサー
- 回答日時:
こんにちは。
>On Error Resume Next
> sh3.Cells(K, "P") = sh1.Cells(i, "P")
>On Error GoTo 0
つまり、ここの部分ですね。
実行時エラーですから、それは、こちらでは、はっきりしたことがいえませんから、
まず、いくつかの検査が必要です。
最初、そのコードから言えるのは、
・セルの文字列の制限は、32,767文字(全角・半角は区別がない)
・セルの中に、制御コード等が入ったりすると、影響を受ける可能性がある
この2点を思いつきます。
また、プロパティを入れたほうが無難だということです。
sh3.Cells(K, "P").Value = sh1.Cells(i, "P").Value
または、
sh3.Cells(K, "P").Text = sh1.Cells(i, "P").Text
そして、
診断用として、このようなテストをしてみたらどうでしょうか?
ローカルウィンドウも出しておいてください。
エラーが出たときに、その値を取ってみるわけです。
On Error Resume Next
sh3.Cells(K, "P") = sh1.Cells(i, "P")
If Err.Number > 0 Then
Stop 'ここからステップモード(VBE で、F8)
a =sh3.Cells(K, "P")
b= sh1.Cells(i, "P")
Debug.Print a, b
End If
On Error GoTo 0
それで、もし、必要なかったら、継続しないで、中途で、マクロを終わらせてしまってもよいです。
回答ありがとうございました。
sh3.Cells(K, "P").Value = sh1.Cells(i, "P").Value
に変えた所、成功しました。
原因は文字数では無く、制御コードぽいです。
助かりました、ありがとうございます。
No.1
- 回答日時:
こんにちは。
>マクロ文を実行すると、下記のエラーが出て処理がSTOPしてしまいます。
> 「実行時エラー'1004':
>アプリケーション定義またはオブジェクト定義のエラーです。」
そのエラーを出した部分と、その周辺を公開してください。
そうしないと、話が前に進まないです。
>・シート間でセル内容をコピーする時の文字数の限界ってあるのでしょうか?
それを、今、ここで話を出しても始まらないと思います。一般的にははるかな大きな量です。
この回答への補足
返信ありがとうございます。
ちょっと説明の数字が違っている箇所があるかと思いますが、
質問内容は同じですので宜しくお願いします。
(長いので、下の方は省いています。足りない場合は
再度転記します。)
Private Sub CommandButton1_Click()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim sh3 As Worksheet
Set sh1 = Worksheets("インシデント管理台帳(F07)")
Set sh2 = Worksheets("まくろ")
Set sh3 = Worksheets("印刷用シート")
Sheets(Sheets.Count).Activate
sh3.Rows("3:60").Select
Selection.RowHeight = 409
sh3.Range( _
"A3:A4,B3:B4,C3:C4,D3:D4,E3:E4,F3:F4,G3:G4,H3:H4,I3:I4,J3:J4,K3:K4,L3:L4,M3:M4,N3:N4,O3:O4,P3:P4,Q3:Q4,R3:R4,S3:S4,T3:T4,U3:U4,V3:V4,W3:W4,X3:X4,Y3:Y4" _
).Select
With Selection
.HorizontalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.Merge
sh3.Range("A3:Y4").Select
Selection.Copy
sh3.Range("A5:Y30").Select
ActiveSheet.Paste
sh3.Range("I27:I28").Select
Application.CutCopyMode = False
sh3.Rows("3:30").Select
Selection.RowHeight = 409
d = sh1.Range("F65536").End(xlUp).Row
K = 3
f = sh2.Range("A2")
t1 = sh2.Range("B2")
'
t = DateSerial(Year(t1), Month(t1) + 1, 1) - 1
For i = 4 To d
If sh1.Cells(i, "F") >= f And sh1.Cells(i, "F") <= t Then
sh3.Cells(K, "A") = sh1.Cells(i, "A")
sh3.Cells(K, "B") = sh1.Cells(i, "B")
sh3.Cells(K, "C") = sh1.Cells(i, "C")
sh3.Cells(K, "D") = sh1.Cells(i, "D")
sh3.Cells(K, "E") = sh1.Cells(i, "E")
sh3.Cells(K, "F") = sh1.Cells(i, "F")
sh3.Cells(K, "G") = sh1.Cells(i, "G")
sh3.Cells(K, "H") = sh1.Cells(i, "H")
sh3.Cells(K, "I") = sh1.Cells(i, "I")
sh3.Cells(K, "J") = sh1.Cells(i, "J")
sh3.Cells(K, "K") = sh1.Cells(i, "K")
sh3.Cells(K, "L") = sh1.Cells(i, "L")
sh3.Cells(K, "M") = sh1.Cells(i, "M")
sh3.Cells(K, "N") = sh1.Cells(i, "N")
sh3.Cells(K, "O") = sh1.Cells(i, "O")
On Error Resume Next
sh3.Cells(K, "P") = sh1.Cells(i, "P")
On Error GoTo 0
sh3.Cells(K, "Q") = sh1.Cells(i, "Q")
sh3.Cells(K, "R") = sh1.Cells(i, "R")
sh3.Cells(K, "S") = sh1.Cells(i, "S")
sh3.Cells(K, "T") = sh1.Cells(i, "T")
sh3.Cells(K, "U") = sh1.Cells(i, "U")
sh3.Cells(K, "V") = sh1.Cells(i, "V")
sh3.Cells(K, "W") = sh1.Cells(i, "W")
sh3.Cells(K, "X") = sh1.Cells(i, "X")
sh3.Cells(K, "Y") = sh1.Cells(i, "Y")
K = K + 2
End If
Next i
Sheets(Sheets.Count).Activate
sh1.Range("A3:Y3").Copy _
Destination:=sh3.Range("A2")
sh3.Range("B:B,E:E,I:I,L:M,R:T,V:W").Delete
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelにて、行の最後のセルの値をコピーして別sheetに張りつけるVBAコードをご教授願います 3 2022/11/20 14:35
- Excel(エクセル) SUMIFSと日付変換 10 2023/04/16 15:38
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- その他(Microsoft Office) 従業員増減対応で当番種類の増減対応な当番表 21 2022/07/19 07:30
- Excel(エクセル) VBAにてエクセルをpdf化する方法 1 2023/03/10 16:20
- Visual Basic(VBA) vbaのvlookup関数エラー原因を教えていただけないでしょうか。 3 2022/04/25 16:16
- Visual Basic(VBA) VBA 改行コードの取り方 1 2022/03/22 14:14
- Visual Basic(VBA) VBA For Each 〜 複数条件について 3 2022/10/20 20:05
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・【大喜利】【投稿~1/31】『寿司』がテーマの本のタイトル
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル マクロで数値が変っ...
-
特定の文字がある行以外を削除...
-
【Excel関数】UNIQUE関数で"0"...
-
エクセルで特定の文字列が入っ...
-
エクセルの幅 高さをセンチで...
-
Excel 時刻の並び替え
-
[EXCEL]ボタン押す→時刻が表に...
-
エクセル マクロ オートフィ...
-
エクセル 上下で列幅を変えるには
-
Excel VBAで「セルが選択された...
-
エクセルのセルに指定画像(.jpg...
-
エクセル、全ページ一括編集の方法
-
アクティブになっている行をマ...
-
excelのデータで色つき行の抽出...
-
結合されたセルをプルダウンの...
-
罫線の斜線を自動で引くマクロ
-
エクセル 時間の表示形式AM/PM...
-
VBAで色の付いているセルの行削除
-
excel 同じ番号のデーターを横...
-
エクセルマクロで偶数行(又は...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【Excel関数】UNIQUE関数で"0"...
-
エクセルで特定の文字列が入っ...
-
特定の文字がある行以外を削除...
-
[EXCEL]ボタン押す→時刻が表に...
-
Excel グラフのプロットからデ...
-
エクセル マクロで数値が変っ...
-
エクセル マクロ オートフィ...
-
結合されたセルをプルダウンの...
-
Excelのフィルター後の一番上の...
-
excel 小さすぎて見えないセル...
-
エクセル 上下で列幅を変えるには
-
エクセルマクロで偶数行(又は...
-
Excel ウインドウ枠の固定をす...
-
EXCELで最後の行を固定
-
VBAで色の付いているセルの行削除
-
連続データが入った行の一番右...
-
エクセル 時間の表示形式AM/PM...
-
エクセルのセルに指定画像(.jpg...
-
エクセルVBA 最終行を選んで並...
-
アクティブになっている行をマ...
おすすめ情報