Select文を使用する場合、「A=Bの場合、A=Cの場合・・・」のように値が完全一致した時に処理を実行させていると思います。ですが中には、
![](https://masashi-blog418.com/wp-content/uploads/2022/09/b0261.png)
完全一致じゃなくて部分一致で判定したい・・・
という方もいると思います。しかし、「Case “ABC*”」のようにワイルドカードを付けても、部分一致で判定させることはできません。
なので今回はSelect文でLikeを使用して部分一致させる方法を紹介します。やり方がわからない方は是非参考にしていただければと思います。
また、不定期でVBAに関する記事を投稿していますので、是非こちらも併せてご覧ください!
Select文でLikeを使用する方法
Select文でLikeを使用するには、Select Caseの後ろをTrueにします。文字だけだと何言ってるかよく分からないと思うので、簡単な例を紹介します。
下記コードをコピペして実行してみてください。
Sub haribona_Select_str()
Dim target As String
target = "私は平成生まれです。"
Select Case True
Case target Like "*昭和*"
MsgBox "ナウい"
Case target Like "*平成*"
MsgBox "チョベリグ"
Case target Like "*令和*"
MsgBox "ぴえん"
End Select
End Sub
実行してみると、targetの値に応じたワードがメッセージボックスに表示されます。
![Select文でLikeを使用する方法_1](https://masashi-blog418.com/wp-content/uploads/2022/11/image-35.png)
このようにSelect Case Trueとすることで、Case式でLikeを使った部分一致ができるようになるわけです。
ちなみに、Select Case targetにした状態でCase式でLikeを使用しても何も引っかからないので注意しましょう。
'何も引っかからない
Select Case target
Case target Like "*昭和*"
MsgBox "ナウい"
Case target Like "*平成*"
MsgBox "チョベリグ"
Case target Like "*令和*"
MsgBox "ぴえん"
End Select
Likeだけじゃなく数字の比較もできる
実はLikeだけじゃなく、数字を使った比較もできます。下記コードをコピペして実行してみてください。
Sub haribona_Select_int()
Dim target_val As Long
target_val = 55
Select Case True
Case target_val >= 1 And target_val <= 49
MsgBox "頑張りましょう。"
Case target_val >= 50 And target_val <= 79
MsgBox "間違えた所を復習してみましょう。"
Case target_val >= 80 And target_val <= 100
MsgBox "素晴らしい!"
End Select
End Sub
実行してみると、target_valの値に応じたアドバイスがメッセージボックスに表示されます。
![Likeだけじゃなく数字の比較もできる_1](https://masashi-blog418.com/wp-content/uploads/2022/11/image-36.png)
このように大なり小なり(<= or =>)を使った数字の比較もSelect Case Trueにすることで判定することが出来ます。
まとめ
今回はSelect文でLikeを使用して部分一致させる方法を紹介しました。
Case式で部分一致させたい場合は、
- Select Case Trueにしておく。
- Case target Like …のように条件式を書く。
このように記述するようにしましょう!
コメント