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(値) |
- VarType関数は、データ型を調べることができます。
- 戻り値は、データ型を示す数値を返します。
- 以下は、MicrosoftのVarType関数のリンクです。
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/vartype-function
データ型を調べるサンプルです。
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文の使い方(条件分岐)
VBA Select Case文の使い方(複数の条件分岐)
VBA For文の使い方(処理を繰り返す)