• ベストアンサー

実行時エラー93 パターン文字列が不正です

ifステートメントでlike演算子を使っていると、 ある文字列で「パターン文字列が不正です」というエラーになります。 意味が分からないのですが、like演算子で使えない文字列があるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.2

こんにちは。お邪魔します。 一応、VBAのヘルプは確認しておいてください。 "文字列式 pattern"の解説を読めば、間接的な説明として受容れられるように思いますが、 パターンに使う角かっこ "[" "]" や 角かっこを使ったcharlist は書き方によってエラーになりますね。 とりあえず、すぐに思い付いたエラーパターンだけ挙げてみます。 他にもあるでしょうけれど、 どんなパターンを指定した時にエラーになったのか、 具体例で訊いてくれた方がベターなんじゃないでしょうか。 Sub Re8142475()   On Error Resume Next ' ' ヘルプより引用:文字の範囲を指定する場合、文字は昇順で指定する必要があります。つまり、[A–Z] は有効なパターンですが、[Z–A] は無効なパターンです   Debug.Print 2 Like "[8-1]"   If Err Then Debug.Print "2 Like ""[8-1]"" Is Error"; vbLf; Err; Err.Description   Err.Clear   Debug.Print 2 Like "[1-8"   If Err Then Debug.Print "2 Like ""[1-8"" Is Error"; vbLf; Err; Err.Description   Err.Clear   Debug.Print "]o[" Like "]o["   If Err Then Debug.Print """]o["" Like ""]o["" Is Error"; vbLf; Err; Err.Description End Sub

参考URL:
http://officetanaka.net/excel/vba/error/execution_error/error_93.htm
vepkkaocnbj
質問者

お礼

どうもありがとうございました。

その他の回答 (1)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 具体的にどのようなLike演算子の使い方をされているのか判らないので 何ともお答えのしようがないのですが・・・ 一般的に Like演算子では左側の文字が右側の文字よりも文字コードが小さくなければなりません。 >Range ("A1") Like "[ア-ん]" のような場合は質問にあるようなメッセージが表示されますが、 >Range("A1") Like "[あ-ン]" であれば問題なくOKです。 具体的なアドバイスができませんが、この程度で失礼します。m(_ _)m

vepkkaocnbj
質問者

お礼

どうもありがとうございました。

関連するQ&A

  • VBA like演算子について

    VBA like演算子について 下記コードで”パターン文字列が不正です”とエラーで止まってしまいます。 For n = 3 To 89 If n Like "[5-7]" Then GoTo Skip_Line・・・・(1) If n Like "[39-70]" Then GoTo Skip_Line・・・(2)     処理・・・・・ Skip_Line: Next n nは行数で5-7行目と39-70行目を処理せずに飛ばそうとしています。 (1)はうまくいくのですが(2)の方で”パターン文字列が不正です”とエラーで止まってしまいます。 どなたかお知恵をおかしい頂ければ幸いです。

  • ifステートメントで、[が含まれるかどうかを調べた

    ifステートメントで、[が含まれるかどうかを調べたいのですが ****************************** Sub test1() Dim myStr As String myStr = "[aaa]" If myStr Like "*[*" Then MsgBox "[を含んでいます。" End If End Sub ****************************** をやろうとすると 「実行時エラー93 パターン文字列が不正です」 となってしまいます。 ヘルプを見ると ************************************************************ 検索の Like 演算子で指定されているパターン文字列が無効です。 エラーの原因と対処方法を次に示します。 たとえば、文字リスト式 [a-b は、右かっこ (]) がないため、無効です。 リスト式の文字を確認します。 詳細については、目的の項目を選択して F1 キー (Windows) または Help キー (Macintosh) を押してください。 ************************************************************ との事なので、 If myStr Like "*[*]" Then としたら、問題なくできましたが、 [だけが含まれているかどうかを調べることは不可能なのでしょうか?

  • VBE上の文字検索で「パターン文字列が不正です」

     今晩は、質問させていただきます。どうぞよろしくお願いいたします。  環境:Win7 Home SP1      Excel2007 でございます。  VBエディタ上のプログラムの文字列をCtrl+Fから検索いたしますと、 何故か「パターン文字列が不正です。」のメッセージボックスが出てまいります。 挙動といたしましては、 ・検索しております文字列は、明らかにコード上にあるものでございます。 ・テキストエディタ(秀丸)上に全コードをコピーしてみると、その上での検索は普通にできます。  (→おそらくVBエディタ上のみでの不具合。) ・検索する文字によっては検索できたりもしますが、それらも何故か  検索結果(背景が青くなる文字列)が後ろへずれております。(全角1文字もしくは2文字分)  →添付図のようになります。 ・全角漢字も半角英字も検索ができなかったり、検索結果がズレたり致します。  「パターン文字列が不正です」で検索しておりますと、「VBAによる検索」の際に、LKEを使うとこのようなコメントが出るようでございますが、今回のような「VBエディタ上のコード検索」は見つけられませんでした。。。  皆様のPC上でこのような挙動をしたことはございますでしょうか??  もしお詳しい方がいらっしゃいましたら,どうぞよろしくお願いいたします。

  • VBA 2つの文字列の差を見る方法

    マクロ作成中、If文でlike演算子を使ってます。ワイルドカードを使い、どう見てもTrueと思える文字列がFalse扱いされており、確認したいのです。 他方法でも構いません。

  • if エラー文字を空白にしたい#VALUE!

    #VALUE!や#REF!を空白にするには? A列に日付が入っていて、=A2-A1のように日付を引いてるのですが 文字が入ったり一番上だとエラーが返ります。 エラーの場合はエラー文字を空白にしたいのですが どうすればいいですか? IFステートメントを使うようですが数式がわかりません。

  • 文字列比較の演算子

    Perl の世界から PHP にやってまいりました。 Perl では、文字列の比較には専用の演算子がありまして、 str1 eq str2 とすると、二つの文字列が同値かどうか調べられますが、PHP にはこのような演算子はないのでしょうか? www.php.net のマニュアルを見ても、そのような演算子がありません。 == 演算子が使えるものかと <?php $str1 = "this is string" ; $str2 = "this is string" if( $str1 == $str2 ) { echo "two string is same" ; } ?> などを試してみるとうまくいくようですが、www.php.net のマニュアルには「文字列を数値化して比較する」と書いてあり、本当に文字列比較が出来るか確信がもてず…。 結局、文字列を比較したいときには strcmp を呼び出していますが、これは PHP 的には正しいのでしょうか?

    • ベストアンサー
    • PHP
  • エクセル 文字列連結演算子で文字列を結合

    文字列連結演算子の「&」 を使って文字列を結合し、その間に()を投入したいです。 A列   B列  C列        D列 高橋太郎 東京  文字連結演算子  高橋太郎(東京) C列 =A1&(B1) ではエラーがでます。正しい書式を教えてください。 A列    B列  C列   D列  E列        F列 高橋太郎 (    東京   )  文字連結演算子   高橋太郎(東京) E列 =A1&B1&C1&D1 ってのは分かるのですが、もっとスッキリするものはないでしょうか? 宜しくお願いします。

  • like演算子で大カッコがあるか判断するには

    Sub test() Dim R As String R = "あ[あ]あ" If R Like "[" Then MsgBox "文字の中に大カッコがあります" End If End Sub を実行すると、 実行時エラーでパターン文字列が不正です。 になります。 If R Like "(" Then なら、問題なく動きます。 どうすればいいでしょうか?ご回答よろしくお願いします。

  • 角カッコが含まれてるかどうかをlikeで取得

    したいのですが、どうやらエラーになるようです。 Sub test() Dim mystr As String mystr = "[test]" If mystr Like "*[*" Then MsgBox "[が含まれます" End If End Sub だと、実行時エラー93 パターン文字列が不正ですになります。 こういうように各カッコが含まれてるかどうかを取得するにはどうすればいいですか?

  • sqlで文字列を最後に追加したい

    SqlServer2000でクライアントはクエリアナライザを使っています。 例えばAccessのVBAでは adoRS!備考 = adoRS!備考.value & "追加する文字列" とすれば備考フィールドの最後に文字列を追加できますが、 これをsqlで行う場合にはどうればいいですか? update tblアンケート set 備考 = 備考 & '追加する文字列' としても「データ型の演算子が無効です。データ型演算子は boolean AND、データ型は varchar です。」エラーになってしまいます。 エラーの意味もわからず検索もしたのですが解決できませんでした。 宜しくお願い致します。

専門家に質問してみよう