Excel VBAの「CVar 関数」について解説します。
CVar 関数とは
Excel VBA の CVar 関数は、引数をバリアント型(Variant)に変換する データ型変換関数のひとつです。
バリアント型(Variant)は、数値、文字列、日付などのさまざまなデータ型を格納できるデータ型です。
それでは、CVar 関数の構文や引数の設定と実際の使い方について具体的に解説していきたいと思います。
CVar 関数(Visual Basic for Applications リファレンス)
構文(引数と戻り値)
Excel VBAの関数を使いこなすには、関数の構文を正しく理解しておくことが重要です。
構文
CVar(expression)
引数
引数 | 説明 |
---|---|
expression | 【必須】任意の数値(式)または文字列(式)を指定します |
戻り値
戻り値 | 説明 |
---|---|
Variant型の値 | Variantには引数に応じた適切な内部型式が格納されます |
VarType 関数 または TypeName 関数を使用すれば、Variant の内部型式を確認することができます。
Variant型 の 内部型式一覧は次のとおりです。
Variant型 の 内部型式一覧
TypeName | VarType 定数 | 値 | 説明 |
---|---|---|---|
Empty | vbEmpty | 0 | データが空の状態(初期状態) |
Null | vbNull | 1 | Null値(無効なデータ) |
Integer | vbInteger | 2 | 整数型 |
Long | vbLong | 3 | 長整数型 |
Single | vbSingle | 4 | 単精度浮動小数点数型 |
Double | vbDouble | 5 | 倍精度浮動小数点数型 |
Currency | vbCurrency | 6 | 通貨型 |
Date | vbDate | 7 | 日付型 |
String | vbString | 8 | 文字列型 |
Object | vbObject | 9 | オブジェクト型 |
Error | vbError | 10 | エラー型 |
Boolean | vbBoolean | 11 | 真偽値(ブール)型 |
Variant | vbVariant | 12 | バリアント型 |
DataObject | vbDataObject | 13 | データアクセスオブジェクト型 |
Decimal | vbDecimal | 14 | 10進数型 |
Byte | vbByte | 17 | バイト型 |
User-defined | vbUserDefinedType | 36 | ユーザー定義型 |
Array | vbArray | 8192 | 配列型 |
解説(使用例)
CVar 関数の使用例をサンプルコードを使って解説します。
CVar 関数の引数と戻り値を確認するサンプル
CVar 関数で各種引数を変換した結果と変換後の内部型式をイミディエイトに表示します。
'■CVar関数サンプル
Sub CVar_Sample()
Dim CV As Variant '変換後のデータを格納する変数
'▼変数にいろいろなデータ型の値を代入
'小さい整数値
CV = CVar(12345): DP (CV) 'Integer
'大きい整数値
CV = CVar(1234567890): DP (CV) 'Long
'小数値
CV = CVar(123.45): DP (CV) 'Double
'小数値(Single型の値)
CV = CVar(CSng(123.45)): DP (CV) 'Single
'小数値(Double)
CV = CVar(123.4567890123): DP (CV) 'Double
'数値の文字列
CV = CVar("123.4567890123"): DP (CV) 'String
'日付リテラル
CV = CVar(#9/10/2024#): DP (CV) 'Date
'文字列の日付
CV = CVar("2024/9/10"): DP (CV) 'String
'日時関数値
CV = CVar(Now): DP (CV) 'Date
'Boolean型の値
CV = CVar(True): DP (CV) 'Boolean
End Sub
'Debug.Print にCVar変換結果と内部型式を表示する
Sub DP(CV As Variant)
Debug.Print "CVarで変換した値:" & CV & " <内部型式:" & TypeName(CV) & ">"
End Sub
TypeName 関数で Variant の内部型式を確認してイミディエイトに表示する部分をベルプロシージャで行うようにしています。コードを実行したイミディエイトの画像がこちらです。
1番目(6行目)、引数が小さい整数値「12345」の変換結果とその内部型式「Integer」が表示されました。
2番目(8行目)、大きい整数値「123457890」の変換結果とその内部型式は「Long」です。
3番目(10行目)、小数値「123.45」の変換結果とその内部型式は「Double」でした。
※ 引数が小数値の場合は数値の大小にかかわらず全て内部型式は「Double」となるようです。
4番目(12行目)では、小数値「123.45」を CSng関数 Single型に変換して渡しています。その結果、内部型式は「Single」になりました。渡される引数のデータ型を内部型式として格納されるということです。
5番目(14行目)、小数値「123.4567890123」の変換結果とその内部型式は「Double」です。
6番目(16行目)、文字列の数値「”123.4567890123″」が引数の場合、その内部型式は「String」です。
7番目(18行目)、日付リテラル「#9/10/2024#」の変換結果とその内部型式は「Date」です。
8番目(20行目)、文字列の日付「”2024/9/10″」が引数場合、その内部型式は「String」です。
9番目(22行目)、現在日時を表示する「Now」関数は、内部型式「Date」です。
10番目(24行目)、引数が「True」の場合は、内部型式「Boolean」です。
28~30行目は、変換結果の Variant を受け取り TypeName 関数で内部型式名を取得してイミディエイトに表示させるプロシージャです。
おわりに
VBAの関数一覧はこちらからご参照ください。
VBAサンプルファイルダウンロードページのご案内
このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。
ダウンロードページへのリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!
Excel VBA CVar 関数は、引数をバリアント型(Variant)に変換するデータ型変換関数です。
バリアント型(Variant)に変換する利点は「柔軟性」と「互換性」です。
さまざまなデータ型を内部型式で格納できるため、明示的にデータ型を指定する必要がありません。
また、他のデータ型に変換する際にエラーが発生しにくく、異なるデータ型間の操作を簡単に行うことができます。
注意点としては、他のデータ型に比べてメモリ消費が多い点です。大量のデータを扱う場合はパフォーマンスに影響する可能性があります。
以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;