小池啓仁 ヒロヒト応援ブログ By はてな

小池啓仁(コイケヒロヒト)の動画など。

小池啓仁 ヒロヒト応援ブログ By はてな

VBAでの2次元配列の初期値定義

VBAはVB6ベースなので、VB.NET系のように宣言と初期値設定が一緒にできません。
なので、普通の2次元配列もジャクの2次元配列も宣言した後に代入文で初期値を代入します。
以下のVBAサンプルは、2次元配列のデータをEXCELのセルへ代入しています。

Sub aaa()
Dim data(2, 3) As Variant '普通の2次元配列宣言
Dim data2() As Variant    'ジャグ配列にするための宣言

data2 = Array(Array(0, 10, 20, 30), _
              Array(1, 11, 21, 31), _
              Array(2, 12, 22, 32))
data(0, 0) = 0
data(0, 1) = 10
data(0, 2) = 20
data(0, 3) = 30
data(1, 0) = 1
data(1, 1) = 11
data(1, 2) = 21
data(1, 3) = 31
data(2, 0) = 2
data(2, 1) = 12
data(2, 2) = 22
data(2, 3) = 32

Worksheets.Add(after:=Worksheets(Worksheets.Count)).Name = "シートx"
Worksheets("Sheet1").Delete
Worksheets("Sheet2").Delete
Worksheets("Sheet3").Delete
Worksheets("シートx").Range(Cells(1, 1), Cells(3, 4)).Value = data
ActiveWorkbook.SaveAs Filename:="C:\xxx.xls"

ちなみに、EXCELのセルに代入する場合は、ジャグ配列はNGで、普通の2次元配列でないとダメですね!