Dictionaryデータ型は日本語では「連想配列」とも呼ばれ、VBAでも使用できます。その名の通り、「文字」から「連想して」値を取り出します。
例えば、「Point」というDictionaryをVBAで定義した上で、「田中」という文字列から「87点」を取り出すような格好になります。
Dictionaryデータ型をVBAで使用するには
Dictionaryデータ型は比較的新しい言語で搭載されているデータ型というふうに考えがちですが、VBAでも他の言語とも遜色なく使用することが出来ます。
参照設定せずに使用する方法もありますが、VBAのコード補完が使用できなくなってしまうので、参照設定をする方法をおすすめします。
1.参照設定をする
Dictionaryデータ型は初期状態では使用することが出来ません。
参照設定は「ツール」→「参照設定」から設定できます。
「Microsoft Scripting Runtime」を参照します。
2.サンプルを作成する
まずは動く物を作りましょう。基本的に「オブジェクト」と呼ばれるものは全て「New」して代入するか、もともと用意されているものを代入するかの2つに分かれます。今回のDictionaryデータ型はもともとあるのを利用するわけではないので、「New」して代入します。
Dictionaryデータ型はインデックスとして利用する文字列と、それで連想される値を同時に入力します。入力するためのメソッドは Dictionary.Add key, item です。
Sub sumple()
Dim Point As New Dictionary
Point.Add “田中”, 87
Point.Add “鈴木”, 67
MsgBox Point(“田中”)
End Sub
Point.Add “鈴木”, 67
End Sub
実行してみると、メッセージボックスで「87」が表示されます。
3.エラーになるんだけど…
Dictionaryデータ型使う時よく起きるのは、重複したキーを追加しようとしたエラーです。重複させないように、キーの追加前に存在を確かめます。
キーの存在を確かめるのは、Dictionary.Exist (key) です。Boolean型で検査の結果を返します。
Sub sumple()
Dim Point As New Dictionary
Point.Add “田中”, 87
Point.Add “鈴木”, 67
If Point.Exists(“田中”) = True Then
Point(“田中”) = 90
Else
Point.Add “田中”, 90
End If
MsgBox Point(“田中”)
End Sub
Point.Add “鈴木”, 67
Point(“田中”) = 90
Else
Point.Add “田中”, 90
End If
End Sub
コードを実行するとエラーなく、「90」が表示されます。
ステップ実行してみると一目瞭然ですが、Point.Addではなく、Point(key)から値の再設定を行っています。
Dictionaryデータ型は実際使いやすいものではありませんが、とても読みやすいVBAコードになります。また参照設定についても解説しました。参照設定はVBAの世界を広げるようなものです。
本来のVBAでは不可能なコードも可能になることもありますので、どんどん情報を集めてください。