連想配列を使用する - Excel VBA プログラミング
PROGRAM
連想配列を使用する
VBA で、キーと値とを関連付けて保存する連想配列を使用したい場合には、Microsoft Scripting Runtime ライブラリに用意されている Scripting.Dictionary 型を使用します。
Dim 交通料金 As Scripting.Dictionary
Set 交通料金 = New Scripting.Dictionary
たとえばこのように宣言すると、次のようにして、連想配列を使用することができるようになります。
交通料金("電車") = 230
交通料金("バス") = 380
上記で格納した値は、同じようにして取得することができます。
Cells(10,5).Value = 交通料金("電車")
たとえばこのようにすると、セル (10, 5) に 交通料金("電車") に保存してあった値が書き込まれます。
また、For Each 構文で、繰り返し処理を行うこともできます。
Dim 交通手段 As Variant
For Each 交通手段 In 交通料金
' 交通手段に "電車" や "バス" といったキーが順不同で取り出せるので、それぞれについて必要な処理を行います。
Next
For Each 構文の In の後に指定されている連想配列から、キーをひとつひとつ順不同で取り出して、その前で指定されている変数にその値が保存され、Next 文が現れるまでの間を、キー毎に繰り返し処理することができます。なお、キーの値を取得するための変数は Variant 型で定義しなければいけないようです。
連想配列が保持しているキーの数は、次のようにして取得できます。
交通料金.Count
また、連想配列が指定したキーを持っているかどうかは、次のようにして判定できます。
交通料金.Exists("飛行機")
そのキーを持っているかどうかを真偽値で取得することができるので、If 文などを使用して、状況に応じた処理を作成することが可能です。
その連想配列が持っているキーの一覧は、次のようにして取得します。
交通料金.Keys
Keys プロパティで取得できたキーの一覧は、0 から始まる配列で取得されています。
なお、Scripting.Dictionary を Excel VBA で上記のように使うためには、VBA コードエディターのシステムメニュー "ツール" から "参照設定" を選択します。
そして "Microsoft Scripting Runtime" ライブラリ (C:\Windows\system32\scrrun.dll) を選択します。
このようにすることで、VBA が "Scripting.Dictionary" という型を認識してくれるようになるので、後は通常のクラス変数と同じように New 演算子でインスタンスを作成したりすることができます。
なお、上記のような参照設定をしなくても、次のようにして Scripting.Dictionary のインスタンスを作成することはできます。
Dim 交通料金 As Object
Set 交通料金 = VBA.CreateObject("Scripting.Dictionary")
ただ、このようにプログラムを作成した場合には、VBA エディターでの自動補完(インテリセンス)が効かずに何かと面倒なので、最初に参照設定を行っておくのがお勧めです。
[ もどる ]