Excel VBA 逆引き集 | 型判定

Excel VBA
スポンサーリンク

型判定

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で分岐: 型ごとに処理を分けると安全。
  • 関数化して再利用: 型判定をまとめるとコードがすっきりする。
タイトルとURLをコピーしました