同じ最初の行をすべて含む 30 枚のシートを含む Excel ファイルを取得しました。シート 1 の最初の行をコピーして既存のすべてのシートに貼り付けるコード/方法を探しています。
行は定期的に変更されるため、この方法で調整する必要があるのは 1 回だけです。
これを行うために使用できます.FillAcrossSheets
:
Sub CopyToAllSheets()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
Sheets.FillAcrossSheets ws.Range("1:1")
End Sub
オプションの型パラメーターを使用して、コピーするものを指定できることに注意してください。
xlFillWithAll
xlFillWithContents
xlFillWithFormats
デフォルトは ですxlFillWithAll
。他のオプションのいずれかを使用する場合は、次のようにします。
' copy contents
Sheets.FillAcrossSheets ws.Range("1:1") xlFillWithContents
また
' copy formats
Sheets.FillAcrossSheets ws.Range("1:1") xlFillWithFormats
ワークブックのすべてのシートにコピーしたくない場合は、次のようにターゲット シートのリストを指定できます。
Sub CopyToSpecificSheets()
Dim wb As Workbook
Dim ws As Worksheet
Dim targetSheets As Variant
Set wb = ThisWorkbook
Set ws = wb.Sheets("Sheet1")
' the sheet we are copying from must be included in the array
targetSheets = Array(ws.Name, "Sheet2", "Sheet4")
wb.Sheets(targetSheets).FillAcrossSheets ws.Range("1:1")
End Sub
標準の 3 枚のシートが設定されていると仮定すると (Sheet1、Sheet2、Sheet3)、簡単な方法で実行できます。
シート 1 ですべての変更を行い、次にシート 2 をクリックし、Shift + シート 3 をクリックします。
セル A1 に「=sheet1!a1」と入力します。
必要なだけコピーします。
シート 1 を選択 (グループ化を解除)
これで、シート 2 と 3 の一番上の行が同じになります。これは、Excel がサポートする数のシートで機能します。したがって、sheet2 をクリックしてから、Shift キーを押しながらシート 50 をクリックすると、シート 2 からシート 50 までの範囲のすべてのシートが入力されます。
次のようなものを検討してください。
Sub qwerty()
Dim r As Range
Set r = Sheets(1).Range("1:1")
For n = 2 To Sheets.Count
r.Copy Sheets(n).Range("A1")
Next n
End Sub