質問が抽象的ですみませんが、質問させて頂きますので
宜しくお願いします。
(まだ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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで特定の文字列が入っ...
-
特定の文字がある行以外を削除...
-
Excel グラフのプロットからデ...
-
[EXCEL]ボタン押す→時刻が表に...
-
エクセル マクロ オートフィ...
-
エクセル マクロで数値が変っ...
-
VBAで色の付いているセルの行削除
-
罫線の斜線を自動で引くマクロ
-
エクセル 時間の表示形式AM/PM...
-
チェックボックスをクリックし...
-
エクセル 上下で列幅を変えるには
-
AのセルとB行を比較して、一致...
-
直近の5個の平均を求めたい
-
【Excel関数】UNIQUE関数で"0"...
-
サイズの違うセル 並べ変え
-
excelのデータで色つき行の抽出...
-
excel 小さすぎて見えないセル...
-
Excelで非表示のセルをとばして...
-
Excelでカタカナ・ひらがな・英...
-
電話番号の入力方式が違うデー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで特定の文字列が入っ...
-
[EXCEL]ボタン押す→時刻が表に...
-
特定の文字がある行以外を削除...
-
エクセル マクロ オートフィ...
-
Excel グラフのプロットからデ...
-
【Excel関数】UNIQUE関数で"0"...
-
エクセル マクロで数値が変っ...
-
VBAで色の付いているセルの行削除
-
エクセル 上下で列幅を変えるには
-
結合されたセルをプルダウンの...
-
excelのデータで色つき行の抽出...
-
AのセルとB行を比較して、一致...
-
excel 小さすぎて見えないセル...
-
罫線の斜線を自動で引くマクロ
-
エクセルのセルに指定画像(.jpg...
-
エクセル 時間の表示形式AM/PM...
-
エクセルVBA 最終行を選んで並...
-
Excelでカタカナ・ひらがな・英...
-
Excelのフィルター後の一番上の...
-
エクセルVBA:データ端に画...
おすすめ情報