• ベストアンサー

VBA 曖昧一致CASE文のELSE

以下の様な曖昧一致CASE文でElse判定がとれず困っています。 どの様にするべきでしょうか Select Case True Case str Like "*AAAA*" ' 処理1 Case str Like "*BBBB*" ' 処理2 Case Else ' Else処理 End Select この例で実行すると、全ての曖昧検索が一致しなくても 結果として処理2が走ってしまいます。

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

  • ベストアンサー
  • mt2015
  • ベストアンサー率49% (258/524)
回答No.2

> sStr = "CCCC" > の場合処理2が走ると思われるのですが、如何でしょうか? いいえ、Else処理になります。 実際のコードの抜粋を提示してみてはいかがですか。 思わぬところで変な処理をしているのかも知れませんよ。

popepon
質問者

お礼

御回答有難う御座います。 原因が解りました。 sStrに実際はファイルパスを代入しているのですが、 それが悪さをしていた様です。 きっかけを頂けましたのでベストアンサーとさせて頂きます。 有難う御座いました。

その他の回答 (2)

  • mike321
  • ベストアンサー率44% (4/9)
回答No.3

比較に使用している変数が1つなら、「Select Case True」ではなく「Select Case 変数」にした方がすっきりします。 sStr = "CCCC" Select Case sStr Case Like "*AAAA*" '「AAAA」が含まれている場合 ' 処理1 Case Like "*BBBB*" '「BBBB」が含まれている場合 ' 処理2 Case Else '上記以外 ' Else処理 End Select Like指定での文字列の前後に"*"を入れているので、指定した文字が含まれている場合、ということになりますので、sStrが”CCCC"であればElse処理になります。

参考URL:
http://accessvba.pc-users.net/syntax/select_case.html
popepon
質問者

お礼

御回答有難う御座います。 参考にさせて頂きましたが、 Case Like "*AAAA*" はエラーになる様で試行出来ませんでした。

  • mt2015
  • ベストアンサー率49% (258/524)
回答No.1

「str」を変数名として使っているつもりでしょうか? 「str」はstr関数で使用されている予約語ですので、変数名には使用できません。 sStrの様に別な変数名を使用しましょう sStr = "AAABBBBCCC" Select Case True Case sStr Like "*AAAA*" ' 処理1 Case sStr Like "*BBBB*" ' 処理2 Case Else ' Else処理 End Select

popepon
質問者

お礼

御回答有難う御座います。 strは質問させて頂くに中って置き換えたものですので 実際の変数名は異なります。 御回答者様の例ですと、 sStr = "CCCC" の場合処理2が走ると思われるのですが、如何でしょうか?

関連するQ&A