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