パターン文字列が不正です。(エラー番号:93)


Sub Sample1()
    Dim buf As String
    buf = Left(Range("A1"), 1)
    If buf Like "[5-1]" Then
        MsgBox "1~5で始まっています"
    End If
End Sub

Like演算子で判定するパター文字列が不正のとき発生するエラーです。

上のコードは、セルA1に入力されているデータの左1文字が「1~5で始まっているか」を判定しようとしていますが、キャラクタリストは、左が小さくなければなりません。なのでエラーです。これは次のようにします。

Sub Sample1()
    Dim buf As String
    buf = Left(Range("A1"), 1)
    If buf Like "[1-5]" Then
        MsgBox "1~5で始まっています"
    End If
End Sub

実際には、こうして数値を判定するより、次のように文字列を判定するケースで起こりやすいです。次のコードは、セルA1に入力されているデータの左1文字が「ひらがな、またはカタカナで始まっているか」を判定しようとしました。

Sub Sample2()
    Dim buf As String
    buf = Left(Range("A1"), 1)
    If buf Like "[ア-ん]" Then
        MsgBox "OK"
    End If
End Sub

文字コードでは、カタカナよりひらがなの方が小さいので、これは次のように指定します。

Sub Sample2()
    Dim buf As String
    buf = Left(Range("A1"), 1)
    If buf Like "[あ-ン]" Then
        MsgBox "OK"
    End If
End Sub

ちなみに、次のように、そもそもパターン文字列の書式間違いでも発生します。まぁ、こちらはもっと単純なミスですね。

Sub Sample3()
    Dim buf As String
    buf = Left(Range("A1"), 1)
    If buf Like "[あ-ン" Then
        MsgBox "OK"
    End If
End Sub