VBAで下記2つはどう違うのでしょうか? Dim arr As Variant Dim arr() As Variant どちらも配列を格納できると思うのですが、 違いが判りません。

Excel | Visual Basic84閲覧

ベストアンサー

1

1人がナイス!しています

ちなみにVariant型と言うのは何の型にもなれますが、実行時には何かの型にならなければ使えません。 つまり変数として何にでもなれるだけの大きさの変数ですが、実行時には何かの形になる必要があります。 ちなみに使用中の型を変える事も出来ます。

その他の回答(1件)

0

最初の変数は variant 型で、 二番目の変数は variant 型配列です。 dim arr as variant: arr=array(1,2,3) dim arr() as variant: arr=array(1,2,3) はいずれも通りますが、二番目のように宣言すると配列型になりますので、配列として扱うことになります。 関数の引数で同じように宣言すれば分かりやすいかもしれません。 public function Test(byref param as variant, byref param2() as variant) as string Test = vbnullstring end function この関数の第一引数には、配列もその他の変数も渡せますが、第二引数は variant 型配列しか受け付けません。 dim a(3) as string dim b as integer dim c as variant dim d() as variant dim answer as string answer=Test(a, d)→OK answer=Test(b, d)→OK answer=Test(c, d)→OK answer=Test(d, d)→OK answer=Test(d, a)→エラー answer=Test(d, b)→エラー answer=Test(d, c)→エラー answer=Test(d, d)→OK