「excel vba array とは 使い方」
「vba array 関数 サンプル」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
VBAで配列を作るときに利用するArray関数の使い方やサンプルを探している方による検索です。
Array関数を使ったサンプルマクロ
Array関数を使った簡単なマクロをまずはご紹介します。
Dim i As Long
Dim arr As Variant
arr = Array("東京", "大阪", "名古屋")
For i = LBound(arr) To UBound(arr)
MsgBox arr(i)
Next i
上記のマクロを実行すると、「東京」「大阪」「名古屋」というメッセージボックスが表示されます。
配列に格納されているデータを順番にメッセージボックスに表示しているのが、
For i = LBound(arr) To UBound(arr)
MsgBox arr(i)
Next i
の部分です。
ここで利用している配列を作成しているのが
arr = Array("東京", "大阪", "名古屋")
の部分です。
Array関数の引数には、配列に格納したいデータを「,」(カンマ)で区切って指定します。
ここでは「東京」「大阪」「名古屋」という文字列を指定しているので、「"」(ダブルクォーテーション)でそれぞれの文字列を括って
"東京", "大阪", "名古屋"
がArray関数の引数として指定されています。
もしも、数値を配列に格納したいのであれば、
arr = Array(1, 2, 3)
で、OKです。
Array関数からデータを受ける変数は必ずVariant型に
上記のマクロでは、
arr = Array("東京", "大阪", "名古屋")
と、結局、文字列を格納されるわけですからString型で宣言したくなるかもしれませんが、これはダメです。
Array関数からデータを受ける変数は必ずVariant型でなければなりません。
Array関数で作成された配列のインデックスの最小値はOption Baseの影響を受ける
Array関数のヘルプは、バージョン等によって間違っている場合があるようです。
Excel 2010のVBAのヘルプ(ローカルにインストールされている版)には、以下のような記述があります。
Array 関数を使用して作成した配列のインデックスの最小値は、常に 0 です。ほかの種類の配列とは異なり、Option Base ステートメントに最小値を指定しても影響を受けません。
これは間違いです。
正しくは、Array関数で作成された配列のインデックスの最小値はOption Baseの影響を受けます。
「Option Base 1」が記述されているモジュールで、先のマクロをステップ実行して、メニュー[表示]-[ローカルウィンドウ]から、ローカルウィンドウを表示して配列の中身を確認すると、下図のように「Option Base 1」の影響を受けてインデックスの最小値が「0」ではなく「1」になっていることを確認できます。
(実はArray関数が「Option Base 1」の影響を受けずに「0」となるケースがあることについて記事を書きました。2015-09-23)
Home » エクセルマクロ・Excel VBAの使い方 » 配列 » Array関数の使い方・サンプル