HOME > 即効テクニック > Excel VBA > シート操作関連のテクニック > Array関数とFillAcrossSheetsメソッドを使って、複数シートに値を同時に入力する

即効テクニック

シート操作関連のテクニック

Array関数とFillAcrossSheetsメソッドを使って、複数シートに値を同時に入力する

( - )
サンプルでは、Sheet1に入力した値を、Sheet2・Sheet3の2枚のシートに同時に入力しています。

まず、Sheet1に値を用意します。 
Array関数を使って3つの文字列"赤","白", "黄"を要素としてもつ配列(myData)を設定しています。

For〜Nextで、Sheet1のA列には番号(1〜3)を、B列には配列(myData)の要素を表示する処理を行っています。

Sheet1に値が用意できたら、Sheet2・Sheet3に同時に入力する準備をします。
今度は、Sheet1・Sheet2・Sheet3を配列(myData)に設定して、一括して値を入力するFillAcrossSheetsメソッドの対象オブジェクトとして使用します。
実行結果は、Sheet1のA列とB列の内容が、Sheet2・Sheet3に入力されます。

* Sheet1に入力される内容 
     A列   B列 
      1    赤 
      2    白 
      3    黄 

●準備● 

新規ブックにSheet1・Sheet2・Sheet3の3つのシートを用意してください。
●サンプル●
Sub Sample() 

    Dim myData As Variant
    Dim i As Integer

    '<配列(myData)に、"赤", "白", "黄"の3つの要素を定義します。>
    myData = Array("赤","白", "黄")              ←(1)

    '<Sheet1のA1〜A3には番号を表示し、
    'B1〜B3にはmyDataの要素を表示します。>
    For i = 1 To 3                       ←(2)
      Worksheets("Sheet1").Cells(i,1).Value = i 
      Worksheets("Sheet1").Cells(i,2).Value = myData(i - 1)  ←(3) 
    Next i 

    '<3つの要素を持つ配列(data)に、"Sheet1","Sheet2", "Sheet3"を定義します。>
    myData = Array("Sheet1","Sheet2", "Sheet3") 

    '<Sheet1のA列とB列の内容をSheet2・Sheet3に同時に入力します。>
    Sheets(myData).FillAcrossSheets Range:=Worksheets("Sheet1").Range("A1:B3")  ←(4)
End Sub 
●補足説明●

  1. Array関数は、配列が格納されたVariant型の値を返します。   Variant型に対してのみ有効で、要素はカンマで区切って設定します。
  2.    
  3. For〜Nextステートメントは、指定された回数分、処理を繰り返します。     <構文> For x =i To y      (処理)     Next x     x:繰り返す回数をカウントする数値変数を指定します。     i:初期値をセットします。     y:繰り返す回数(最終値)をセットします。     Nextステートメントでxに1加算され、再び処理を繰り返します。
  4. Array関数を使用して作成した配列のインデックスの最小値は、常に0です。    そのため、サンプル「myData(i- 1)」としています。
  5. FillAcrossSheetsメソッドは、指定されたセル範囲を、コレクション内の    他のすべてのワークシートの同じ領域にコピーします。     <構文>      object.FillAcrossSheets(Range,Type)
object:対象となるSheetsオブジェクト、またはWorksheetsオブジェクトを表すオブジェクト式を指定します。 Range:対象のセル範囲 (Range オブジェクト)を指定します。この引数で指定したセル範囲が、シートのコレクションに属するすべてのワークシートの同じ領域にコピーされます。 ただし、このセル範囲は、指定したコレクション内のワークシートで指定する必要があります。 (サンプル「myData = Array("Sheet1","Sheet2", "Sheet3")とコピー元のシート名も設定しています。) Type:省略可能です。セル範囲のコピー方法を指定します。