contents
|
配列の構造を持ったデータは、そのまま同じデータ型の動的配列に代入することができます。
たとえば、次のプロシージャを実行すると、配列変数bの2番目の要素として「3」がメッセージボックスに表示されます。
Sub test1() Dim a(2) As Integer Dim b() As Integer a(0) = 1 a(1) = 3 a(2) = 5 b() = a() MsgBox b(1) End Sub
この場合、配列変数bの要素数は事前にRedimで設定しておく必要はなく、自動的にaと同じサイズの配列になります(Redimで要素数を設定していたとしても、代入後はaと同じサイズになります)。
ただし、配列変数をそのまま代入する場合は必ず両者のデータ型を同じにする必要があり、この例でbをバリアント型にしても、aの内容を代入することはできません。
一方、配列変数ではなくバリアント型の変数にも、直接配列を代入することが可能です。
たとえば次のようなコードであれば、配列変数aのデータ型に関係なく、変数bにそのまま代入することができます。
Sub test2() Dim a(2) As Integer Dim b As Variant a(0) = 1 a(1) = 3 a(2) = 5 b = a() MsgBox b(1) End Sub
配列データを代入されたバリアント型の変数は、当然、それ以降は配列としての扱いを受けることになります。
ただし、その後のコードで配列でない値を代入し直すことも可能で、それ以降は再びスカラ変数に戻ります。
なお、test1もtest2も、配列を代入する際にはカッコを略して「b = a」のように記述することも可能です。