ディクショナリに限ったことではないがオブジェクト配列の初期化方法がパッと頭に思い浮かばなかったのでメモ。

元々のコードは以下のとおり。

Dim dic(3) As New Dictionary

この書き方はdicNothing判定ができないことを知り、自分の中ではNGの書き方となった。

そこで納期に追われて焦りながらこう書き替えた。

Dim dic(3) As Dictionary: Set dic(3) = New Dictionary

これだと実行時エラーとなる。デバッグすると4つ目の要素以外はNothingとなっていた。

魔クロードに解決方法を尋ねると以下のとおり。

Dim dic(0 To 3) As Dictionary, i As Long
For i = 0 To 3
    Set dic(i) = New Dictionary
Next
  • ディクショナリ配列各要素の初期化は愚直にNewを繰り返すこと
  • 配列宣言はToを使うことで意図が明確になる


宣言について、おっしゃるとおり納得です。これからは取り入れます。

ありがとう魔クロード👾