• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA なんですが)

VBAで複数のワークシートを選択して範囲をコピーする方法

このQ&Aのポイント
  • VBAを使用して、すべてのワークシートを順番に選択して指定した範囲をコピーし、別のシートに貼り付ける方法を教えてください。
  • Set sh = Worksheets(sh.Name)でエラーになります。正しい方法を教えてください。
  • Dim sh3 As Worksheet、Dim sh As Worksheet、Dim en As Longとは何ですか?具体的な使い方を教えてください。

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

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.3

>アクティブのシートを範囲を決めてコピーする方法なんですが >それを別のシートに貼り付け そのままコードにすると ActiveSheet.Range("範囲1").Copy Worksheets("別のシート").Range("範囲2") 範囲1、範囲2、別のシート名 は、貴方しか解りませんよ ただ推測すると、このような事をしたいのではと? 参考に Sub Test()   Dim sh3 As Worksheet   Dim sh As Worksheet   Dim en As Long      Set sh3 = Worksheets("まとめ")   For Each sh In ActiveWorkbook.Worksheets     If sh.Name <> "まとめ" Then       en = sh.UsedRange.Rows.Count       sh.Range(sh.Cells(2, 1), sh.Cells(en, 10)).Copy _         sh3.Cells(Rows.Count, "A").End(xlUp).Offset(1)     End If   Next End Sub

nego1322
質問者

お礼

ほんとうにありがとうござます。 完璧な理想の答えです。 watabe007さん またVBAで分からないことがありましたら 教えてください。 本当に助かりました。

その他の回答 (2)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

>Cellsプロパティにもシート(sh)を参照と言うのはどのようなことですか? sh.Range(Cells(2, 1), Cells(en, 10)).Copy これだと shシートのRang(を指していますが sh.Range(Cells Rangeの中のCellsプロパティはシートを指定していないのでアクティブシートを指しています

nego1322
質問者

補足

全てのシートを順番に読んでいき アクティブのシートを範囲を決めてコピーする方法なんですが それを別のシートに貼り付け また次のシートを読むプログラムを教えてください。 For Each sh In ActiveWorkbook.Worksheets   If sh.Name <> "まとめ" Then     en = sh.UsedRange.Rows.Count     sh.Range(sh.Cells(2, 1), sh.Cells(en, 10)).Copy

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

Dim sh3 As Worksheet Dim sh As Worksheet Dim en As Long Set sh3 = Worksheets("まとめ") For Each sh In ActiveWorkbook.Worksheets   If sh.Name <> "まとめ" Then     en = sh.UsedRange.Rows.Count     sh.Range(sh.Cells(2, 1), sh.Cells(en, 10)).Copy Cellsプロパティにもシート(sh)を参照してやる必要があります。

nego1322
質問者

補足

ありがとうございます。 VBAが不慣れでして Cellsプロパティにもシート(sh)を参照と言うのはどのようなことですか? すいません。返事お願いします。

関連するQ&A

専門家に質問してみよう