7-7.データ型に関する関数

今回は、データ型に関する関数について説明します。

データの種類を調べる

TypeName関数:データの種類を文字列で返す

○構文
TypeName(var)

○処理
varに指定したデータの種類を文字列で返します。

取得できるデータの種類は下表の通りです。

種類内容
Byteバイト型
Integer整数型
Long長整数型
Single単精度浮動小数点数
Double倍精度浮動小数点数
Currency通貨型
Decimal10進数型
Date日付型
String文字列型
Booleanブール型
Errorエラー値
EmptyVariant型の初期値
Null無効値
Objectオブジェクト型
WorkbookやWorksheetなど
オブジェクト固有の型もあります
Unknown不明なオブジェクト
Nothingオブジェクト型の初期値

VarType関数:データの処理形式を整数値で返す

○構文
VarType(var)

○処理
varに指定したデータの処理形式を数値で返します。

取得できる値は下表の通りです。

数値定数内容
0vbEmptyVariant型の初期値
1vbNull無効値
2vbInteger整数型
3vbLong長整数型
4vbSingle単精度浮動小数点数
5vbDouble倍精度浮動小数点数
6vbCurrency通貨型
7vbDate日付型
8vbString文字列型
9vbObjectオブジェクト型
10vbErrorエラー値
11vbBooleanブール型
12vbVariantバリアント型
13vbDataObjectデータオブジェクト型
14vbDecimal10進数型
17vbByteバイト型
20vbLongLongLongLong整数型
36vbUserDefinedTypeユーザー定義型
8192vbArray配列型
Sub データの種類を調べる()
    
    'TypeName関数
    Dim obj As Object
    MsgBox TypeName(123) '>>> Integer
    MsgBox TypeName("123") '>>> String
    MsgBox TypeName("True") '>>> String
    MsgBox TypeName(True) '>>> Boolean
    MsgBox TypeName(obj) '>>> Nothing
    Set obj = ThisWorkbook
    MsgBox TypeName(obj) '>>> Workbook
    
    'VarName関数
    MsgBox VarType(123) '>>> 2(vbInteger)
    MsgBox VarType("123") '>>> 8(vbString)
    MsgBox VarType(True) '>>> 11(vbBoolean)
    MsgBox VarType(obj) '>>> 9(vbObject)
    
End Sub

特定のデータ型か調べる

調べたいデータ型ごとに、下表の関数を使用します。

関数構文処理
IsNumericIsNumeric(exp)expに指定した値が数値かどうかTrue/Falseで返します
IsDateIsDate(exp)expに指定した値が日付や時刻かどうかTrue/Falseで返します
IsArrayIsArray(exp)expに指定した値が配列かどうかTrue/Falseで返します
IsNullIsNull(exp)expに指定した値が無効値かどうかTrue/Falseで返します
IsEmptyIsEmpty(exp)expに指定した値がバリアント型の初期値かどうかTrue/Falseで返します
IsObjectIsObject(exp)expに指定した値がオブジェクトかどうかTrue/Falseで返します
IsErrorIsError(exp)expに指定した値がエラー値かどうかTrue/Falseで返します
IsMissingIsMissing(exp)expに指定した値がプロシージャに渡されたかどうかTrue/Falseで返します
プロシージャの引数に対して使用します
Sub 特定のデータ型か調べる()

    MsgBox IsNumeric(123) '>>> True
    MsgBox IsNumeric("123") '>>> True
    
    MsgBox IsDate("2023/5/11") '>>> True
    MsgBox IsDate(20230511) '>>> False
    
    Dim ary As Variant
    MsgBox IsArray(ary) '>>> False
    ary = Range("A1:B2").Value
    MsgBox IsArray(ary) '>>> True
    
    Call IsMissing関数("var1")
    
End Sub

Sub IsMissing関数(var1 As Variant, Optional var2 As Variant)
    
    MsgBox IsMissing(var1) '>>> False
    MsgBox IsMissing(var2) '>>> True
    
End Sub

特定のデータ型に変換する

変換したいデータ型ごとに、下表の関数を使用します。

関数構文処理
CDateCDate(exp)expに指定した値を日付型に変換します
CLngCLng(exp)expに指定した値を長整数型に変換します
CIntCInt(exp)expに指定した値を整数型に変換します
CDecCDec(exp)expに指定した値を10進数型に変換します
CSngCSng(exp)expに指定した値を単精度浮動小数点数型に変換します
CDblCDbl(exp)expに指定した値を倍精度浮動小数点数型に変換します
CCurCCur(exp)expに指定した値を通貨型に変換します
CStrCStr(exp)expに指定した値を文字列型に変換します
CByteCByte(exp)expに指定した値をバイト型に変換します
CBoolCBool(exp)expに指定した値をブール型に変換します
CVarCVar(exp)expに指定した値をバリアント型に変換します
Sub 特定のデータ型に変換する()

    MsgBox CDate(45057) '>>> "2023/05/11"
    
    MsgBox CLng(1.5) '>>> 2
    
    MsgBox CBool(1) '>>> True
    
End Sub

コメント