Home » エクセルマクロ・Excel VBAの使い方 » 配列 » 1次元配列のデータを縦方向に入力-WorksheetFunction.Transpose

1次元配列のデータを縦方向に入力-WorksheetFunction.Transpose

対象: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

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

 For i = LBound(arr) To UBound(arr)
  arr(i) = i * 100
 Next i

 Range("A1", Cells(UBound(arr), 1)).Value _
   = 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

「配列」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.