連想配列を使用する - 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 エディターでの自動補完(インテリセンス)が効かずに何かと面倒なので、最初に参照設定を行っておくのがお勧めです。

 


[ もどる ]