VBA データ型とデータ型を調べる方法

VBAのデータ型とデータ型を調べる方法です。(Excel、Access)

目次

サンプル データ型
  文字列と数値の変換
  データ型を調べる(VarType関数)

データ型

VBAの主なデータ型です。

データ型 データ型名 説明
Byte バイト型 0~255
Integer 整数型 -32,768~32767
※3万2千までしかないので注意が必要です
Long 長整数型 -2,147,483,648~2,147,483,647
Single 単精度・浮動小数点型 (負の値) -3.402823E38 ~ -1.401298E-45  
(正の値)1.401298E-45 ~ 3.402823E38
Double 倍精度・浮動小数点型 (負の値) -1.79769313486232E308 ~ 
-4.94065645841247E-324
(正の値)4.94065645841247E-324 ~ 1.79769313486232E308 
Currency 通貨型  -922,337,203,685,477.5808 ~
922,337,203,685,477.5807
String 文字列型  最大約20億文字
Date 日付型  西暦100 年1月1日~西暦9999年12月31日
Boolean ブール型 True またはFalse。初期値はFalse
Object オブジェクト型  オブジェクトを参照するデータ型
Variant バリアント型 すべての基本データ型を格納できる
配列作成時に使用します

以下は、MicrosoftのVBAのデータ型の概要のリンクです。
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/data-type-summary

文字列と数値の変換

Sub test1()
    
    Dim a As String
    a = "100"
    
    b = CInt(a) 'String型をInteger型に変換
    Debug.Print (b) ' 100
    Debug.Print (VarType(b)) ' 2 Integer
    
    c = CLng(a) 'String型をLong型に変換
    Debug.Print (c) ' 100
    Debug.Print (VarType(c)) ' 3 Long
    
    D = CStr(b) 'Integer型をString型に変換
    Debug.Print (D) ' 100
    Debug.Print (VarType(D)) ' 8 String
End Sub

6行目のCIntは、String型をInteger型に変換しています。
10行目のCLngは、String型をLong型に変換しています。
14行目のCStrは、Integer型をString型に変換しています。

データ型を調べる(VarType関数)

VarType(値)

データ型を調べるサンプルです。

Sub test1()
    
    Debug.Print (VarType(100)) ' 2 Integer
    
    Debug.Print (VarType(100.5)) ' 5 Double
    
    Debug.Print (VarType("100")) ' 8 String
       
    Debug.Print (VarType(True)) ' 11 ブール値
    
    Dim a
    Debug.Print (VarType(a)) ' 0 空 vbEmpty
    
    Debug.Print (VarType(Null)) ' 1 Null
    
    Dim arr1(2) As Integer
    Debug.Print (VarType(arr1)) ' 8194 配列(Integer)
    
    Dim arr2(2) As String
    Debug.Print (VarType(arr2)) ' 8200 配列(String)
    
    arr3 = Array(1, 2, 3)
    Debug.Print (VarType(arr3)) ' 8204 配列(Variant)
    
    Debug.Print (Now) ' 2020/11/08 14:32:39
    Debug.Print (VarType(Now)) ' 7 日付値
    
End Sub

11,12行目は、変数に値を代入していません。0の空(empty)になります。
16,19,22行目は、配列です。データ型によって値が変わります。

関連の記事

VBA IF文のサンプル(Excel/Access)
VBA Select Case文のサンプル(Excel/Access)
VBA For文のサンプル(Excel/Access)

△上に戻る