【Excel VBA】Select文でLikeを使用する方法を紹介【部分一致】

Excel
スポンサーリンク

Select文を使用する場合、「A=Bの場合、A=Cの場合・・・」のように値が完全一致した時に処理を実行させていると思います。ですが中には、

完全一致じゃなくて部分一致で判定したい・・・

という方もいると思います。しかし、「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

このように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

このように大なり小なり(<= or =>)を使った数字の比較もSelect Case Trueにすることで判定することが出来ます。

スポンサーリンク

まとめ

今回はSelect文でLikeを使用して部分一致させる方法を紹介しました。

Case式で部分一致させたい場合は、

  1. Select Case Trueにしておく。
  2. Case target Like …のように条件式を書く。

このように記述するようにしましょう!

コメント

タイトルとURLをコピーしました