Variant 型の変数には、あらゆるスカラーデータ型の値を代入できます。あるスカラーデータ型の値を別のスカラーデータ型の変数に代入すると、次の例のようにエラーになります。
Dim myVariantV As Variant
Dim myVariantArrayV(1 to 5) As Variant
Dim aString As String
Dim anInt As Integer
myVariantV = 1234567
myVariantArrayV(1) = 1234567
myVariantV = "Hello"
myVariantArrayV(1) = myVariantV
aString$ = 1234567
' Produce an error, because 1234567 is not a String.
anInt% = 1234567
' Produce an error because 1234567 is too large
' to be treated as an Integer.
Variant データ型を使用すると、型を調べたり互換性の問題に煩わされることもなく、(日付などの) さまざまな型の値を自由に操作できます。また、Variant データ型を使用すると、配列やリストは (単一のデータ型に制約されずに) 異なるデータ型の項目を保持でき、ユーザー定義のデータ型に含めることのできるデータの範囲が大幅に広がります。ただし、Variant 型はスカラー型よりも多くの記憶域を必要とし、Variant 型が関係する操作はスカラー型だけの場合よりも低速になる傾向があります。操作している値の特定のデータ型を追跡できなくなりがちなので、ときには予期しない結果になる場合もあります。指定された操作を効率的に実行するために、明示的に宣言されたスカラー型の変数ではなく、Variant 型の変数を本当に使用する必要があるかどうかを検討してください。