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