対象:Excel 2010, Excel 2013, Windows版Excel 2016
Excel VBAを使って、配列からセルに一気にデータを入力するには、基本的には2次元配列を使う必要があります。
1次元配列のデータも横方向ならば入力できる
しかし横方向にデータを入力するなら、1次元配列でもOKです。
[スポンサードリンク]
例えば以下のSubプロシージャを実行すると、A1:E1セルに、100・200・300・400・500と整数が入力されます。
Sub 一次元配列からセルにデータ入力_横方向()
Dim arr(1 To 5) As Long
Dim i As Long
For i = LBound(arr) To UBound(arr)
arr(i) = i * 100
Next i
Range("A1", Cells(1, UBound(arr))).Value = arr
End Sub
Dim arr(1 To 5) As Long
Dim i As Long
For i = LBound(arr) To UBound(arr)
arr(i) = i * 100
Next i
Range("A1", Cells(1, UBound(arr))).Value = arr
End Sub
1次元配列のデータを縦方向に入力するにはWorksheetFunction.Transpose
これをA1:A5セルに入力する場合、本来的には2次元配列を用意しなければならないのですが、WorksheetFunction.Transposeメソッドを使うことで、1次元配列のデータを縦方向に入力することができます。
以下のSubプロシージャを実行すると、A1:A5セルに、100・200・300・400・500を入力できます。
Sub 一次元配列からセルにデータ入力_縦方向()
Dim arr(1 To 5) As Long
Dim i As Long
= WorksheetFunction.Transpose(arr)
End Sub
Dim arr(1 To 5) As Long
Dim i As Long
For i = LBound(arr) To UBound(arr)
arr(i) = i * 100
Next i
= WorksheetFunction.Transpose(arr)
End Sub
要素数は65536まで
この場合に、要素数がいくつまでWorksheetFunction.Transposeメソッドで方向を変更できるのかテストしてみたところ、65536までOKでした。
上記のSubプロシージャで、配列の宣言が、
Dim arr(1 To 65536) As Long
までは、期待どおりA1:A65536セルにデータを入力できますが、
Dim arr(1 To 65537) As Long
にするとダメです。
[スポンサードリンク]
Home » エクセルマクロ・Excel VBAの使い方 » 配列 » 1次元配列のデータを縦方向に入力-WorksheetFunction.Transpose