一次元配列

配列の作成

・Array()関数を使うと「0ベースx要素数」の配列を作る

・変数宣言で定義すると「0ベースx引数の数字+1の要素数」を作る

・Ubound()のreturnは要素数になる(0ベースなのでubound+1が要素数)

    Dim arr: arr = Array(1, 2, 3, 4, 5)
    Dim arr2(5) As Variant
    Debug.Print UBound(arr) '4
    Debug.Print UBound(arr2) '5

変数宣言の引数で開始位置を1に指定できる
こちらの方がUboundと要素数が一致してわかりやすい
(ただし値の代入を自動化できないと面倒)

    Dim arr(1 To 5) As Variant
    Debug.Print UBound(arr) '5

一次元配列の出力

・配列は横方向に伸びるので、Range範囲を横方向に合わせると綺麗に出力できる

・縦方向に出力したい場合はWorksheetFunction.Transpose()で向きを変更できる

一次元配列のループ処理

・For Eachは要素のコピーを処理するので配列自身の値は変更されない

・配列の値を一括で編集したい場合は普通のFor文を使う必要あり

0ベースから1ベースに変換する

Array()やSplit()などで作った配列は0ベースになってしまうが
2回Transposeすると1ベースに変換できる

Sub tra()
    Dim arr: arr = Split("a,b,c,d,e", ",")
    arr = WorksheetFunction.Transpose(WorksheetFunction.Transpose(arr))
End Sub

仕様メモ配列変数

Posted by rafavba