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