Home > 即効テクニック > Excel VBA > セル操作関連のテクニック > セル範囲のデータを選択中の複数シートに一括コピー

即効テクニック

セル操作関連のテクニック

セル範囲のデータを選択中の複数シートに一括コピー

(Excel 97/2000)
サンプルではInputBoxでユーザが指定する範囲のデータを選択中のシートすべてにコピーします。
※指定した範囲と同アドレスのセル範囲へのコピーです。また、複数のシートを手動で選択するにはCtrlキーを押しながら順にシートを選択します。コードから行う場合はArray関数を使用します。
(例)Sheets(Array(1, 2)).Select
   Sheets(Array("Sheet1", "Sheet2")).Select

'=======標準モジュール========
Sub CopyRangeToSelectedSheets()

'複数シートを選択していない場合は中断
If ActiveWindow.SelectedSheets.Count < 2 Then
    MsgBox "複数シートを選択してください"
    Exit Sub
End If

Dim Rng As Range

On Error Resume Next 'キャンセル回避

'コピーする範囲を選択する
Set Rng = Application.InputBox("範囲指定", Type:=8)

On Error GoTo 0 'エラー処理を初期状態に戻す

'対象範囲を選択中のすべてのシートの同位置にコピー
If TypeName(Rng) = "Range" Then
    ActiveWindow.SelectedSheets.FillAcrossSheets _
        Range:=Rng, Type:=xlFillWithAll
End If

End Sub
※FillAcrossSheetsメソッドのType引数には・・・
 xlFillWithAll、xlFillWithContents、xlFillWithFormulas
が指定できます。

また、このメソッドは複数シートを選択した状態でメニューの”編集”- ”フィル”- ”作業グループへコピー”の動作をマクロ記録することで確認できます。