• ベストアンサー

VBA CASE文 文字列比較に特殊記号

CASE文で ¥ \ など特殊な記号で 文字列比較したいケースが時折あります。 MsgBox 等で比較すると問題無くTrueになるのですが、 Caseの文字列比較だと正しく評価されません。 どの様に記述するべきでしょうか。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

CASE文でなく、LIKE演算子で並べてはどうか。 https://www.sejuku.net/blog/33810#i-2 の「ワイルドカードのエスケープ」などの内容を応用できないか。 プログラムコード上で、(CASEに似て)列挙的にコードが書けるのでは。 CASEはそっくり一致だと思うので、が http://www.relief.jp/docs/excel-vba-select-case-like.html http://vbaexcel.seesaa.net/article/140800843.html ーー 下記もテスト的にやってみてください。2文字重ね法。 VB:通常の文字列 <-VBはVB6.0?  VBの通常の文字列リテラルでは、ダブルクォーテーション記号「"」や改行記号などの特殊文字は、そのままでは文字列リテラル内に記述できない。  ダブルクォーテーション記号「"」を文字列リテラル内に記述するには、ダブルクォーテーション記号を2つ重ねて「""」と書く。

popepon
質問者

お礼

Likeでも良いんですが 複数条件必要になりそうだったのと 曖昧で複数条件だと煩雑になりそうだったので 結局Replaceして逃げました もしくはcaseの評価にboolを使い bool 代入時に評価させるのもアリかも知れません と言うかもうIFでやれって感じですが。。。 参考になりました有難う御座いました。

その他の回答 (1)

  • kanti42
  • ベストアンサー率26% (8/30)
回答No.1

ASCIIで比較するという手段もあるのではないでしょうか!

popepon
質問者

お礼

なるほどそれもありですね 参考になりました有難う御座います

関連するQ&A

  • Excel2003 VBA 文字列の比較で

    Excel2003 VBAです。 2つの文字列があって、この2つの文字列を日本語の部分だけで 比較しようとしています。 なので、文字列からアルファベットと数字と記号を削除してから 比較したいのですが、どんな方法があるでしょうか。 よろしくお願いします。

  • Excel:文字列の比較:大文字と小文字の区別

    Excel(2002)のワークシートの数式で文字列を比較するとき 半角英字の大文字と小文字が区別されないようなのですが、 区別するためにはどうしたらよいのでしょうか。 ※任意のセルで ="a"="A" とすると TRUE が帰ってくる。Countif などの動作も同様。 ※VBAでは次のコードを実行すると FALSE が表示される。 Sub compare() If "a" = "A" Then MsgBox "TRUE" Else MsgBox "FALSE" End If End Sub カテゴリ違いかもしれません。とすれば申し訳ありません。よろしくおねがいします。

  • PHPの文字列の比較について

    PHPの文字列の比較について質問です。 $hoge = "文字列¥¥テスト"; $foo = "文字列¥テスト"; とあった場合 var_dump($hoge == $foo); とすると trueがかえってきます。 バイト列としてみた場合 エスケープしたバックスラッシュと 構文上、エスケープの必要のないバックスラッシュの文字列上の 比較ですがこれが、なぜかtrueがかえってきます。 これは、当然の結果なのでしょうか? PHPは文字列を比較するさい、バイト列としての文字列のならびより アウトプットされる結果を比較しているということでしょうか? それとも、単純に上記変数$hogeと$fooはバスックスラッシュの使用方法は 関係なく同一のものとして扱われるのでしょうか?

    • 締切済み
    • PHP
  • 文字列の比較に関する質問

    文字列をif文で比較したいのですが、まず下記の例だと char *a a="a"; if(a=="a"){ printf("等しい"); }else{ printf("等しくない"); } 文字列は等しくなるのですが下記の例ではなりません 何故なのでしょうか。 read(s_sock,&buf,sizeof(buf)) if(a=="GET"){ printf("TRUE") }else{ printf("FALSE"); }

  • 文字列比較

    お世話になります。 テキストボックスの後ろの文字を比較したいのですが text1.text = "123456789" だとして if text1.textの後ろ3文字 = "789" then msgbox "正しく入力されてます" else msgbox "きちんと入力してください" 見たいな感じにしたいのですが この後ろ3文字を調べるにはどうすればよろしいでしょうか?教えて下さい。お願いします。

  • VBAでワイルドカードを使った文字列検索

    初めて投稿いたします。 環境は、WinXP Access2000 下記のVBAモジュールで、文字列検索がヒットしません。 数字の比較でヒットするのはナゼでしょうか? ちなみに、変数に導入したのは、全角半角どちらも入れてみました。 この疑問・・・どなたか解決お願いします。 Sub TEST() Dim AAA As String Dim BBB As String Dim YYY As String AAA = "0" BBB = "2" YYY = AAA & BBB Select Case YYY Case "0*" MsgBox "ココを通り過ぎないで!" Case "15" MsgBox "やったね" Case Is > 0 MsgBox "なぜかココでヒットします??" End Select End Sub

  • 文字列を比較するプログラム

    キーボードより文字列aと文字列bを入力し、比較する(どちらが辞書並びで先かを表示する)プログラムを作れ。但し、strcmp関数を用いてはならない。 という問題があるんですが文字列の比較のしかたがまったくわかりません。わかりやすく教えていただけるとありがたいです。

  • 文字列で渡された式

    質問です。 タイトルのままですが文字列で渡された式で 処理を決定させることはできるのでしょうか? たとえば ============================ dim str as string = "10 > 5" if strの文字列判定 then msgbox("TRUE") else msgbox("FALSE") end if ============================

  • VBAで文字列を分割して比較

    エクセルでこんな事をしたいんですけど、どうしたらいいか教えてください! A1 教えて!goo #1マイクロエクセル A2 教えてgoo #1マイクロアクセス A3 教えて!goo #1マイクロワード A4 新・教えて!goo #1マイクロエクセル A5 教えて!goo #2マイクロエクセル B1 ようこそ「教えて!goo 」へ C1 1 D1 マイクロソフト エクセル アクセス A列のセルの内容がB1,C1,D1の内容と比較して正しいかどうかチェックさせたいんです。 ポイント 1、A列は字数の制限がありB1とD1の内容をアットランダムに縮めてある   (A1の"マイクロエクセル"という文字列がD1にあるかどうかでは不十分) 2、B1の値は必ず半角整数で、A列では"#"の後に入っている 3、A列=B1&C1&D1という並びは固定 4、スペースは無視 上記の場合 A1=TRUE A2=TRUE A3=FALSE A4=FALSE A5=FALSE が返せればOKです。 特に教えて欲しいところはA列の区切り方 ("#"の左右で区切るには?) (整数とその後で区切るには?) と、アットランダムに縮められた文字列を どうやって照合させたらいいかという点です。 もしいくつかの方法があるのでしたら、 出来るだけ動きが軽いほうが嬉しいです。 (A列のデータが膨大なので) よろしくお願いします。

  • 文字列の比較と比較結果の表示

    Visual Basicで文字数が同じ2つの文字列を比較(文字列1を文字列2と比較)し、違う文字部分を色を付けて文字列1を表示させるにはどうしたら良いのでしょうか。教えてください。お願いします。 文字列1: AGAAGGAGCUUU 文字列2: AGAACCAGCUUU

専門家に質問してみよう