VBAを実行すると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のエラーはパターンを知っておくと発生した時に慌てず対応することができますので、
しっかりと対処方法を把握するようにしておきたいですね!
コメントを残す