Vba:範囲を別のシートにコピーする方法
VBA で次の構文を使用すると、セル範囲を別のシートにコピーできます。
Sub CopyRangeToSheet()
Worksheets(" Sheet1 ").Range(" A1:C11 ").Copy
Worksheets(" Sheet2 ").Range(" A1 ").PasteSpecial
Application.CutCopyMode = False
End Sub
この特定のマクロは、 Sheet1の範囲A1:C11のセルをコピーし、 Sheet2のセルA1から始まる範囲に貼り付けます。
注: Application.CutCopyMode = False行は、マクロの実行後にカット アンド コピー モードを無効にすることを指定します。
次の例は、この構文を実際に使用する方法を示しています。
例: VBA を使用して範囲を別のシートにコピーする
Excel のSheet1というシートに次のデータ セットがあり、さまざまなバスケットボール選手に関する情報が含まれているとします。
現在空のSheet2という別のシートもあると仮定します。
Sheet1からA1:C11の範囲内のすべての値をコピーし、 Sheet2のセルA1から貼り付けたいとします。
これを行うには、次のマクロを作成できます。
Sub CopyRangeToSheet()
Worksheets(" Sheet1 ").Range(" A1:C11 ").Copy
Worksheets(" Sheet2 ").Range(" A1 ").PasteSpecial
Application.CutCopyMode = False
End Sub
このマクロを実行すると、 Sheet2に次の出力が表示されます。
Sheet1の範囲A1:C11のすべての値がセルA1からSheet2にコピーされたことに注意してください。
デフォルトでは、値はソースの書式設定で貼り付けられました。
たとえば、ヘッダー行の値は太字です。
ソースの書式設定を行わずに値のみを貼り付けたい場合は、次のようにPaste:=xlPasteValuesを指定できます。
Sub CopyRangeToSheet()
Worksheets(" Sheet1 ").Range(" A1:C11 ").Copy
Worksheets(" Sheet2 ").Range(" A1 ").PasteSpecial Paste=xlPasteValues
Application.CutCopyMode = False
End Sub
このマクロを実行すると、 Sheet2に次の出力が表示されます。
Sheet1の範囲A1:C11の値 (書式設定なし) のみがSheet2にコピーされたことに注意してください。
注: VBA PasteSpecialメソッドの完全なドキュメントはここにあります。
追加リソース
次のチュートリアルでは、VBA で他の一般的なタスクを実行する方法について説明します。
VBA:書式設定せずに値だけを貼り付ける方法
VBA: 表示されている線を別のシートにコピーする方法
VBA: 条件に基づいて行を別のシートにコピーする