みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VBA 曖昧一致CASE文のELSE

以下の様な曖昧一致CASE文でElse判定がとれず困っています。
どの様にするべきでしょうか
Select Case True
Case str Like "*AAAA*"
' 処理1
Case str Like "*BBBB*"
' 処理2
Case Else
' Else処理
End Select

この例で実行すると、全ての曖昧検索が一致しなくても
結果として処理2が走ってしまいます。

投稿日時 - 2018-02-16 13:16:54

QNo.9429623

すぐに回答ほしいです

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

> sStr = "CCCC"
> の場合処理2が走ると思われるのですが、如何でしょうか?

いいえ、Else処理になります。

実際のコードの抜粋を提示してみてはいかがですか。
思わぬところで変な処理をしているのかも知れませんよ。

投稿日時 - 2018-02-16 15:14:37

お礼

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

投稿日時 - 2018-03-06 16:41:45

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.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

投稿日時 - 2018-02-24 15:22:45

お礼

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

投稿日時 - 2018-03-06 16:38:17

ANo.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

投稿日時 - 2018-02-16 13:40:45

お礼

御回答有難う御座います。
strは質問させて頂くに中って置き換えたものですので
実際の変数名は異なります。

御回答者様の例ですと、
sStr = "CCCC"
の場合処理2が走ると思われるのですが、如何でしょうか?

投稿日時 - 2018-02-16 14:48:49