VBA エラー 93「パターン文字列が不正です。」の原因と対処方法

VBAを実行するとVBA エラー 93「パターン文字列が不正です。」を見る機会はありませんか?

コードをみても誤った箇所がわからず途方に暮れる場合もあるかと思います。

そんな中で悩むことは、

・VBA エラー 93「パターン文字列が不正です。」の原因はなに?
・VBA エラー 93「パターン文字列が不正です。」の対処はどうすればよい?

ではないでしょうか?

今回は、

・VBA エラー 93「パターン文字列が不正です。」の原因とサクっとできる対処方法

についてまとめます!

VBA エラー 93「パターン文字列が不正です。」はどんなエラー?

Like演算子で判定に利用するパターンマッチングの文字列がLike演算子の基準に合っていないとき発生するエラーです。

VBA エラー 93の原因①「文字や数字の範囲を指定する時に規定値を超えたパターンを使用している」

文字や数字の範囲を指定する時に無効なパターンを使用している場合にエラーが発生します。

例えば数字[1-3]と指定すべきところが[3-1]となるとエラーとなります。

以下はサンプルコードです。

“[テスト]”という文字列に対して、”[*”パターンであればメッセージを表示させる内容です。

Sub エラーテスト1()

    Dim intTest As Integer
    intTest = 1
    If intTest Like "[3-1]" Then
        MsgBox intTest
    End If
End Sub

はい、エラーがでましたね。

VBA エラー 93の原因①「文字や数字の範囲を指定する時に無効なパターンを使用している」の対処方法は有効なパターンにする

エラー 93の原因①「文字や数字の範囲を指定する時に無効なパターンを使用している」の対処方法は有効なパターンにしましょう。

Sub エラーテスト1R()

    Dim intTest As Integer
    intTest = 1
    If intTest Like "[1-3]" Then
        MsgBox intTest
    End If
End Sub

はい、でなくなりましたね。

VBA エラー 93の原因②「角カッコ[]が含まれてるかどうかをlikeで取得している」

角カッコ[]は、Like演算子で意味を持つ特殊文字であるため、角カッコを利用すると文法的に誤っているということでエラーとなります。

以下はサンプルコードです。

“[テスト]”という文字列に対して、”[*”パターンであればメッセージを表示させる内容です。

Sub エラーテスト2a()

    Dim strTest As String
    strTest = "[テスト]"
    If strTest Like "[*" Then
        MsgBox strTest
    End If

End Sub

はい、エラーがでましたね。

VBA エラー 93の原因②「角カッコが含まれてるかどうかをlikeで取得している」の対処方法はエスケープする

エラー 93の原因②「角カッコが含まれてるかどうかをlikeで取得している」の対処方法はエスケープするようにしましょう。

ただし、Like演算子には正規表現で特殊文字を比較する時に利用するエスケープ文字(^、\、~など)はそのまま使えませんが、

角カッコ[]でくくればエスケープされる仕様となっているので、それを利用します。

先ほどの”[*”を”[[]*”へ変更し、特殊文字をエスケープします。

Sub エラーテスト2aR()

    Dim strTest As String
    strTest = "[テスト]"
    If strTest Like "[[]*" Then
        MsgBox strTest
    End If

End Sub

はい、メッセージが表示されました。

他には、InStr関数を使って、特殊文字が何文字あるかで判定する方法もあります。

さいごに

今回は、

・VBA エラー 93「パターン文字列が不正です。」の原因とサクっとできる対処方法

についてまとめました。

VBAのエラーはパターンを知っておくと発生した時に慌てず対応することができますので、

しっかりと対処方法を把握するようにしておきたいですね!



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。








コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です