0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Excel VBA】CVar関数|値をVariant型に変換する方法と注意点

Last updated at Posted at 2025-09-08

この記事ではCVar関数の使い方と注意点について解説します。
他のよく使うVBA関数一覧はこちら。

CVar関数の使い方と注意点

CVar関数は、数値や文字列をVariant型に変換する関数です。
Variant型はVBAで最も柔軟なデータ型で、数値・文字列・日付などを格納できるため、汎用的に利用されます。
ただし、柔軟さの反面、メモリ消費が大きく、処理速度も遅くなるため、乱用には注意が必要です。

構文

CVar()
  • : 変換したい数値や文字列、日付など
  • 戻り値 : Variant型の値

使用例

数値をVariant型に変換

Sub Sample()
    Dim value As Integer
    Dim result As Variant
    
    value = 123
    result = CVar(value)
    
    Debug.Print result
    Debug.Print TypeName(result)
End Sub

▶ 出力結果

123
Integer

CVar関数はVariant型を返す関数です。
ただし、Variantには「サブタイプ」があり、実際の値の種類によってサブタイプが決まります。
・数値を渡すと → Variant (Integer / Long / Double などのサブタイプ)
・文字列を渡すと → Variant (String サブタイプ)
・日付を渡すと → Variant (Date サブタイプ)
TypeName関数はVariant型のサブタイプを返すためVariantという出力にはなりません。

小数をVariant型に変換

Sub Sample()
    Dim value As Double
    Dim result As Variant
    
    value = 123.456
    result = CVar(value)
    
    Debug.Print result
    Debug.Print TypeName(result)
End Sub

▶ 出力結果

123.456
Double

文字列をVariant型に変換

Sub Sample()
    Dim strValue As String
    Dim result As Variant
    
    strValue = "Hello"
    result = CVar(strValue)
    
    Debug.Print result
    Debug.Print TypeName(result)
End Sub

▶ 出力結果

Hello
String

日付をVariant型に変換

Sub Sample()
    Dim strDate As Date
    Dim result As Variant
    
    strDate = "2025/08/20"
    result = CVar(strDate)
    
    Debug.Print result
    Debug.Print TypeName(result)
End Sub

▶ 出力結果

2025/08/20
Date

⚠️注意

柔軟だが非効率

Variant型はあらゆるデータを保持できる反面、他の型よりもメモリ消費が多く、処理速度も遅くなるため、
数値や文字列など用途が明確な場合は、適切な型(Long, Double, Stringなど)を使用しましょう。

その他のVBA関数

【Excel VBA】VBAでよく使う関数一覧&基本の使い方

参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?