lisz-works

技術と興味の集合体

Excel VBA 配列 使い方要点まとめ

【スポンサーリンク】

Excel

Excel VBAの配列について、よく忘れるのでまとめてみました!

配列の宣言

宣言は()をつけることで行います。

Dim arr() As String

よくある言語と違うどころは、[]でなく()で行うことです。

配列数の初期化

配列の初期化は「ReDim」で行います。
コレをすることで、配列要素数を設定します。

ReDim arr(num)

例えば0~5の配列を作る場合は

ReDim arr(5) ' [0]~[5]

のようにします。

ぼくはてっきり1から始まると思っていたらハマりました……

そして「5個」作られると思ったので、更にハマった……
この場合の配列の最終番号「4」を想定していたら、「5」だったので……

代入

代入は

arr(1) = "text"

で行います。
配列へのアクセスも、宣言同様()で行います。

値の取得

値の取得も

val = arr(1)

のように行います。
同じく()で配列要素へアクセスです!

配列サイズ・配列インデックス

VBAは「配列サイズ」という要素がありません。
他の言語でよく使う「length」という要素ですね。

そのかわりに、先頭と最終のインデックス番号が取得できます。

LBound(arr) ' 先頭インデックス
UBound(arr) ' 最終インデックス

コレを使うと、配列を全て処理することもできます。

For ii = LBound(arr) To UBound(arr)
    ' 処理
Next ii

最終行を知る

配列とは関係ないですが、この1文で列の最終行を知ることができます。

ActiveSheet.Cells(Rows.Count, 1).End(xlUp).row

コレを使ってループすると……

配列に対象列の情報を一気に詰めることができます!

Dim ii, row As Integer
Dim arr() As String
ReDim varName(dataNum - 1)
For row = 1 To ActiveSheet.Cells(Rows.Count, 1).End(xlUp).row
    arr(ii) = Cells(row, 1).Value
    ii = ii + 1
Next row

参考

こちらを参考にしました。
ありがとうございました!

Office TANAKA - VBAの変数[動的配列]

tonari-it.com

d.hatena.ne.jp

あとがき

配列をシート内の一覧と絡めて使う場合、ループカウンタとrow(行)/col(列)を併用すると、いいと思います!

なんか大概なんとかなる気がします。