本ページには広告が含まれています。

ExcelVBA CVar関数 引数をVariantに変換します

ExcelVBA CVar関数 引数をVariantに変換します

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型 の 内部型式一覧

TypeNameVarType 定数説明
EmptyvbEmpty0データが空の状態(初期状態)
NullvbNull1Null値(無効なデータ)
IntegervbInteger2整数型
LongvbLong3長整数型
SinglevbSingle4単精度浮動小数点型
DoublevbDouble5倍精度浮動小数点型
CurrencyvbCurrency6通貨型
DatevbDate7日付型
StringvbString8文字列型
ObjectvbObject9オブジェクト型
ErrorvbError10エラー型
BooleanvbBoolean11真偽値(ブール)型
VariantvbVariant12バリアント型
DataObjectvbDataObject13データアクセスオブジェクト型
DecimalvbDecimal1410進数型
BytevbByte17バイト型
User-definedvbUserDefinedType36ユーザー定義型
ArrayvbArray8192配列型

解説(使用例)

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 の内部型式を確認してイミディエイトに表示する部分をベルプロシージャで行うようにしています。コードを実行したイミディエイトの画像がこちらです。

CVar_Sample を実行した結果のイミディエイト画像

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 関数で内部型式名を取得してイミディエイトに表示させるプロシージャです。

おわりに

Excel VBA CVar 関数は、引数をバリアント型(Variant)に変換するデータ型変換関数です。

バリアント型(Variant)に変換する利点は「柔軟性」と「互換性」です。
さまざまなデータ型を内部型式で格納できるため、明示的にデータ型を指定する必要がありません。
また、他のデータ型に変換する際にエラーが発生しにくく、異なるデータ型間の操作を簡単に行うことができます。

注意点としては、他のデータ型に比べてメモリ消費が多い点です。大量のデータを扱う場合はパフォーマンスに影響する可能性があります。

以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;

VBAの関数一覧はこちらからご参照ください。

スポンサーリンク
スポンサーリンク

VBAサンプルファイルダウンロードページのご案内

このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。

ダウンロードページへのリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!