Variant型【バリアント型】
Variant型とは?

通常の変数は整数型や文字列型など、あらかじめ決められた型の値しか格納できないが、Variant型は内部的に型情報を保持し、代入される値に応じて動的に型が変化する。変数宣言も「Dim v As Variant」のように行い、特定のデータ型は宣言しなくてよい。
例えば、変数に数値を格納すると数値型になり、その変数に後から文字列を代入すると文字列型に自動的に切り替わる。処理系によっては真偽値や日付型のほか、配列、オブジェクト参照、ユーザー定義型、何も代入されていない状態を示すNullやEmptyなどの特殊な値も格納できる。
利用者から入力された値が数値になるか文字列になるか事前に分からない場合や、異なる型の値を共通の手順で受け渡したい場合などに用いられる。関数やプロシージャの引数、戻り値として使われることも多い。あらかじめ型を限定せずに処理を進められるため、プログラムの記述を柔軟にする手段として用いられる。Excel VBA(Visual Basic for Applications)ではセルの値を読み込む際に数値か文字列かをあらかじめ判別しなくてよい型として重宝される。
一方、値そのものに加えて型情報も管理するため、固定長の数値型や文字列型より多くの記憶領域を必要とする。演算や比較の度に型の判定や変換が発生するため、処理速度の面でも不利になる。型が異なる値同士の演算や比較を行っても必ずしもエラーになるとは限らず、処理系が自動的に型を変換した結果、意図しない値のまま処理が継続されることがある。
こうした特性から、用途を見極めずに多用すると、不具合の原因を把握しにくいプログラムになりやすいとされる。近年の言語設計では、コンパイル時に型を厳密に検査する「静的型付け」が重視される傾向にあり、Variant型のような「動的型付け」の仕組みは安全性の観点から利用が忌避されることも多い。TypeScriptのany型のように、似た性質を持つ型を別の名称で導入している言語も存在する。