動的配列を宣言する時はどうしていますか?
Dim Var() as variant
Redim Var(1 to 3)
上記のように変数名の後に()をつけて宣言し、
Redimで要素数を指定してから使用するのではないでしょうか。
しかし今回長年見慣れたこの方法とは違う宣言方法に出会いました。
()なしで動的配列宣言(の準備)
()なしでVariant型の動的配列を宣言する方法です。
Dim Var as variant
手元にあるExcel VBAの本を調べても()なしで宣言しているものはありませんでした。
自分も今まで動的配列を宣言する場合は()をつけていました。
では()を付ける場合・付けない場合でどのような違いがあるのでしょうか?
動的配列以外に使用できる
言うまでもなく()を付けない場合は普通のVariant型変数の宣言と同じになります。
ということは動的配列だけでなく他の変数にも使用することが出来ます。
()をつけると動的配列以外には使用することが出来ません。
Redim時に型変更可能
()を付けない場合、Redimでの要素数指定時に別の方を宣言することが出来ます。
変数宣言時にVariant型を指定していても、Redim時にlong型等別の型に変更することが出来ます。
まとめ
()をつけずに普通のVariant型からRedim時に動的配列を宣言する方法を取ることでコードに融通が効くようだと、これが動的配列の定石になりそうな気がします。
フォロワーさんからはこのような意見も頂きました。
むしろ、私の中では、Variantを使うなら、()を付けないのが通常だと思ってます。
— はけた@ピボットテーブル+PowerQuery本 発売中 (@excelspeedup) 2019年12月29日
Variantで()を付けたことによる、良い思い出がありません。
しばらくは()を使用せずに動的配列の宣言をしてみようと思います。