OR の 代わりに Like を使う

最近のお気に入りは、OR演算子の代わりに、Like演算子を使うこと。
使える場面は限られるが、例えば下記のような場合。

<条件>

  • 文字列の一文字目がAまたはBまたはCのとき、〇を返す。
  • 上記以外の場合、×を返す。

昔は、こんな風に書いていた。

Function LikeTest(str As String) As String
    If Left(str, 1) = "A" Or Left(str, 1) = "B" Or Left(str, 1) = "C" Then
        LikeTest = "〇"
    Else
        LikeTest = "×"
    End If
End Function

テストしてみると、こんな感じになる。

Sub test()
    Debug.Print LikeTest("A123")
    Debug.Print LikeTest("D456")
    Debug.Print LikeTest("C789")
End Sub

f:id:Infoment:20210407230507p:plain

或いは、こんな風に書くこともできる。

Function LikeTest(str As String) As String
    Select Case Left(str, 1)
        Case "A", "B", "C"
            LikeTest = "〇"
        Case Else
            LikeTest = "×"
    End Select
End Function

さらに、Like "[ABC]" が「AまたはBまたはC」を意味することを
用いれば、こんな書き方が可能だ。

Function LikeTest(str As String) As String
    If Left(str, 1) Like "[ABC]" Then
        LikeTest = "〇"
    Else
        LikeTest = "×"
    End If
End Function

せっかくLike演算子を用いるのだから、ワイルドカードを用いたこちら
の記述の方が、より良いかもしれない。

Function LikeTest(str As String) As String
    If str Like "[ABC]*" Then
        LikeTest = "〇"
    Else
        LikeTest = "×"
    End If
End Function

数珠繋ぎにORを書くことに飽いた方は、ぜひ一度お試しください。
なお、最後にどの用法に落ち着くかは、時と場合と各位のお好みで。

参考まで。