• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:マクロ EXCELの範囲をコピーして貼付け2)

マクロEXCELの範囲をコピーして貼付け2

このQ&Aのポイント
  • エクセルファイルに複数のシートがあり、特定の文字が含まれたシートの表を範囲指定してコピーし、別のシートに貼り付けたい場合に最終行を求める際にエラーが発生します。
  • マクロを使用してエクセルファイルのシートを統合する際に、特定の文字が含まれたシートにある表を範囲指定してコピーし、統合シートの最終行に貼り付ける方法を教えてください。
  • エクセルファイルには複数のシートがありますが、特定の文字が含まれたシートにある表を範囲指定してコピーし、別のシートに貼り付ける方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

間違いのソノ1: 変数の宣言(Dim)をIntegerにしているからです。Longに変更します。 間違いのソノ2: 最初に統合のA1セルに「No」を記入した後,end(xldown)では間違いです。 実際に手を動かして,統合のA1のNoが入った状態からA1セルでCtrl+↓を押して,end命令の作動結果をエクセルを操って確認してみて下さい。 こんなカンジ: sub macro1()  dim wT as worksheet  dim w as worksheet  set wT = worksheets.add(after:=worksheets(worksheets.count))  wt.name = "統合"  wt.range("A1") = "No"  for each w in worksheets   if w.name like "*時*" then    w.range("A5:M" & w.range("A65536").end(xlup).row).copy _     destination:=wt.cells.specialcells(xlcelltypelastcell).offset(1).end(xltoleft)   end if  next end sub

nanacolobiyaoki
質問者

お礼

ご丁寧にソースまで書いて頂きありがとうございました。 無事最終行から貼り付けすることができました。 早速のご回答に感謝申し上げます。 ありがとうございました。

その他の回答 (1)

  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.2

1回目の統合シートには"A1"しかデータが入力されていないので >Worksheets("統合").Range("A1").End(xlDown).Row を実行するとA1から検索するので最終行65536が帰ってきてしまいます。 wsNewMaxRowはIntegerなのでオーバーフローしてしまいます。 1回目はwsNewMaxRowに固定で1を入れるようにすればいいのでは。

nanacolobiyaoki
質問者

お礼

早速のご回答ありがとうございます。 wsNewMaxRowは「65536」で帰ってきました・・・。 ご指摘ありがとうございました。 1回目のwsNewMaxRowを固定で「1」を入れるようにし無事できました。 ありがとうございました。

関連するQ&A