型判定
VBAでは「この値は文字列?数値?日付?」といった 型判定 がよく必要になります。型を正しく判定できると、エラーを防ぎ、安全に処理できます。初心者向けに、コード例とテンプレートをかみ砕いて説明します。
基本の考え方
- VarType関数: 値の型を数値で返す。
- TypeName関数: 値の型を文字列で返す。
- IsNumeric / IsDate / IsEmpty: 特定の型かどうかを判定する便利関数。
- 用途: 入力チェック、データ変換前の安全確認、条件分岐。
テンプレ1:VarTypeで型を判定
Sub TypeCheck_VarType()
Dim v As Variant
v = 123
Debug.Print VarType(v) ' → 2 (Integer)
v = "ABC"
Debug.Print VarType(v) ' → 8 (String)
v = #2025/12/11#
Debug.Print VarType(v) ' → 7 (Date)
End Sub
VB- ポイント:
VarTypeは数値コードで返す。- 2 = Integer
- 3 = Long
- 4 = Single
- 5 = Double
- 7 = Date
- 8 = String
- 9 = Object
- 0 = Empty
テンプレ2:TypeNameで型を文字列で判定
Sub TypeCheck_TypeName()
Dim v As Variant
v = 123
Debug.Print TypeName(v) ' → "Integer"
v = "ABC"
Debug.Print TypeName(v) ' → "String"
v = #2025/12/11#
Debug.Print TypeName(v) ' → "Date"
End Sub
VB- ポイント:
TypeNameは人間にわかりやすい文字列で返す。初心者にはこちらが便利。
テンプレ3:IsNumeric / IsDate / IsEmpty
Sub TypeCheck_IsFunctions()
Dim v As Variant
v = "123"
If IsNumeric(v) Then Debug.Print v & " は数値です"
v = "2025/12/11"
If IsDate(v) Then Debug.Print v & " は日付です"
Dim w As Variant
If IsEmpty(w) Then Debug.Print "w は未設定 (Empty)"
End Sub
VB- ポイント:
IsNumeric→ 数値かどうかIsDate→ 日付かどうかIsEmpty→ 未設定かどうか
テンプレ4:セルの値を型判定して処理分岐
Sub TypeCheck_Range()
Dim ws As Worksheet: Set ws = Worksheets("Data")
Dim v As Variant
v = ws.Range("A2").Value
Select Case True
Case IsNumeric(v)
MsgBox "数値です → " & v
Case IsDate(v)
MsgBox "日付です → " & v
Case VarType(v) = vbString
MsgBox "文字列です → " & v
Case Else
MsgBox "その他の型です"
End Select
End Sub
VB- ポイント: 型によって処理を分けると安全。入力チェックに最適。
テンプレ5:型判定関数を作って再利用
Function GetTypeName(ByVal v As Variant) As String
GetTypeName = TypeName(v)
End Function
Sub TypeCheck_Custom()
Dim arr As Variant
arr = Array(123, "ABC", #2025/12/11#, Empty)
Dim i As Long
For i = LBound(arr) To UBound(arr)
Debug.Print arr(i), "→", GetTypeName(arr(i))
Next i
End Sub
VB- 結果:
- 123 → Integer
- “ABC” → String
- 2025/12/11 → Date
- Empty → Empty
例題で練習
'例1:VarTypeで型コードを確認
Sub Example_VarType()
TypeCheck_VarType
End Sub
'例2:TypeNameで型名を確認
Sub Example_TypeName()
TypeCheck_TypeName
End Sub
'例3:IsNumeric/IsDate/IsEmptyで判定
Sub Example_IsFunctions()
TypeCheck_IsFunctions
End Sub
'例4:セルの値を型判定して分岐
Sub Example_Range()
TypeCheck_Range
End Sub
'例5:型判定関数を作って配列をチェック
Sub Example_Custom()
TypeCheck_Custom
End Sub
VB初心者向けポイント
- VarTypeは数値コード、TypeNameは文字列: どちらも型判定に使える。
- IsNumeric/IsDateは便利: 入力チェックに最適。
- Empty判定も重要: 未設定の変数や空セルを扱うときに役立つ。
- Select Caseで分岐: 型ごとに処理を分けると安全。
- 関数化して再利用: 型判定をまとめるとコードがすっきりする。
