- ベストアンサー
マクロEXCELの範囲をコピーして貼付け2
- エクセルファイルに複数のシートがあり、特定の文字が含まれたシートの表を範囲指定してコピーし、別のシートに貼り付けたい場合に最終行を求める際にエラーが発生します。
- マクロを使用してエクセルファイルのシートを統合する際に、特定の文字が含まれたシートにある表を範囲指定してコピーし、統合シートの最終行に貼り付ける方法を教えてください。
- エクセルファイルには複数のシートがありますが、特定の文字が含まれたシートにある表を範囲指定してコピーし、別のシートに貼り付ける方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
間違いのソノ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
その他の回答 (1)
- o_chi_chi
- ベストアンサー率45% (131/287)
1回目の統合シートには"A1"しかデータが入力されていないので >Worksheets("統合").Range("A1").End(xlDown).Row を実行するとA1から検索するので最終行65536が帰ってきてしまいます。 wsNewMaxRowはIntegerなのでオーバーフローしてしまいます。 1回目はwsNewMaxRowに固定で1を入れるようにすればいいのでは。
お礼
早速のご回答ありがとうございます。 wsNewMaxRowは「65536」で帰ってきました・・・。 ご指摘ありがとうございました。 1回目のwsNewMaxRowを固定で「1」を入れるようにし無事できました。 ありがとうございました。
お礼
ご丁寧にソースまで書いて頂きありがとうございました。 無事最終行から貼り付けすることができました。 早速のご回答に感謝申し上げます。 ありがとうございました。