VBAで配列の配列を作成する
VBAで複雑なプログラムを作る際に、多次元配列を使うと、どの次元が何にあたるか、ということを暗に管理しなくてはなりません。暗黙の意味は時が経つと忘れてしまうため、あまり好ましいものではありません。
そのため、一次元配列の値として配列を入れ込みたいのですが、VBAはそんな親切な言語ではありません。
ただし、ディクショナリの値として配列を持つことが可能ですので、ディクショナリを使うことで、疑似的な配列に配列を格納するということができます。
例としてはこんな感じになります。
Dim cndSetIndex As Long
cndSetIndex = -1
Dim conditions As Variant
Dim condition As Variant
Dim conditionByIndex As Dictionary
Set conditionByIndex = New Dictionary
For Each conditions In conditionSet
condition = Split(conditions, "$")
cndSetIndex = cndSetIndex + 1
conditionByIndex.Add Str(cndSetIndex), condition
Next
この例は、conditionSetという配列の中の個々の値のなかに、区切り文字$で区切られた値があり、$で区切った文字列を配列として、conditionSetの順にConditonByIndexディクショナリに格納しています。
これにより、conditonSetの順に値を取り出しながら、$があるケースについては、$で区切られた分だけ繰り返し処理をするということが容易になります。これを多次元配列なんかで記述すると、何がなんだかわからなくなりますが、疑似配列のディクショナリを導入することで、意味を持ったコードを記述することができます。
なお、ディクショナリのキーとしては数字は持てませんので、文字列に変換して文字列の数字をキーとして配列を格納します。
この記事が気に入ったらサポートをしてみませんか?