Select Case文 VBAで自動化 VBAテクニック集 VBA一覧 文法・構文

【VBA】Select Case文で文字列の比較する方法

Select Case文は、数値だけでなく文字列を比較する場合にも便利な構文です。文字列比較では、大文字と小文字の扱いや部分一致、複数の文字列条件の評価など、柔軟な処理が可能です。Excel VBAでSelect Caseを使用した文字列比較の方法ついて説明します。

Excel VBAでSelect Caseを使った文字列の比較方法

Select Caseでの文字列比較の基本構文

Select Case文は、特定の文字列を基準に条件を分岐させる場合に使用できます。文字列を比較する際は、文字列そのものを基準値として指定します。

【使用例: 単純な文字列比較】

Sub StringComparisonWithSelectCase()

Dim color As String
color = "Red"

Select Case color

Case "Red"

MsgBox "色は赤です。"

Case "Blue"

MsgBox "色は青です。"

Case "Green"

MsgBox "色は緑です。"

Case Else

MsgBox "色が不明です。"

End Select

End Sub

変数colorの値に基づいてメッセージを表示します。

  • 例えばcolor"Red"の場合、「色は赤です。」と表示されます。

大文字と小文字を区別しない文字列比較

VBAの文字列比較はデフォルトで大文字と小文字を区別しません。そのため、"Red""red"は同じ値として扱われます。

【使用例: 大文字と小文字を区別しない比較】

Sub CaseInsensitiveComparison()

Dim color As String
color = "red"

Select Case color

Case "Red"

MsgBox "色は赤です。"

Case Else

MsgBox "色が不明です。"

End Select

End Sub

color"red"でも「色は赤です。」と表示されます。「色が不明です。」と表示された場合は、Option Compare TextでTextモードにすると意図通りになります。

【VBA】Option Compare 【Binary・Text】ステートメントの設定方法

大文字と小文字を区別する文字列比較

大文字と小文字を区別して比較したい場合は、StrComp関数を使ったり、文字列をすべて大文字または小文字に変換してから比較する方法があります。

【使用例: 小文字に変換して比較】

Sub CaseSensitiveComparison()

Dim color As String
color = "Red"

Select Case LCase(color)

Case "red"

MsgBox "色は赤です。"

Case Else

MsgBox "色が不明です。"

End Select

End Sub

LCase関数を使って変数colorを小文字に変換し、比較を行います。

【VBA】大文字と小文字を区別しない:LCase・UCase


【使用例: StrComp関数を使用した比較】

Sub CaseSensitiveComparisonWithStrComp()

Dim color As String
color = "Red"

Select Case True

Case StrComp(color, "Red", vbBinaryCompare) = 0

MsgBox "色は赤です。"

Case Else

MsgBox "色が不明です。"

End Select

End Sub

StrComp関数を使い、大文字と小文字を区別して比較します。

【VBA】StrComp関数の活用

部分一致の文字列比較

Select Case文では部分一致は直接サポートされていませんが、Like演算子を使用して部分一致を判定することが可能です。

【VBA】部分一致の処理をする方法:Like演算子

【使用例: 部分一致で判定】

Sub PartialMatchComparison()

Dim fruit As String
fruit = "Green Apple"

Select Case True

Case fruit Like "*Apple*"

MsgBox "リンゴが含まれています。"

Case fruit Like "*Banana*"

MsgBox "バナナが含まれています。"

Case Else

MsgBox "該当する果物はありません。"

End Select

End Sub

変数fruit"Apple"が含まれている場合に「リンゴが含まれています。」と表示されます。

複数の文字列条件をまとめて判定

Select Case文では、カンマ(,)を使って複数の文字列条件をまとめることができます。

【使用例: 複数の条件をまとめた比較】

Sub MultipleStringConditions()

Dim day As String
day = "Saturday"

Select Case day

Case "Saturday", "Sunday"

MsgBox "週末です。"

Case "Monday", "Tuesday", "Wednesday", "Thursday", "Friday"

MsgBox "平日です。"

Case Else

MsgBox "不明な日です。"

End Select

End Sub

day"Saturday"または"Sunday"の場合に「週末です。」と表示されます。

複雑な条件分岐

以下は、商品カテゴリーに基づいて異なる処理を実行する例です。

Sub ProductCategoryExample()

Dim category As String
category = "Electronics"

Select Case category

Case "Electronics"

MsgBox "電子製品を選択しました。"

Case "Clothing", "Shoes"

MsgBox "アパレル商品を選択しました。"

Case "Furniture"

MsgBox "家具を選択しました。"

Case Else

MsgBox "カテゴリーが不明です。"

End Select

End Sub

変数categoryの値に応じて、異なるメッセージを表示します。

注意点とベストプラクティス

  • 大文字・小文字の扱いを明確にする: 比較の際に大文字と小文字を区別したい場合は、StrCompLCase/UCase関数を使用して明示的に制御しましょう。
  • 部分一致の判定にはLikeを活用する: 部分一致が必要な場合は、Like演算子を組み合わせることで柔軟な比較が可能です。
  • 複数条件のグループ化を活用する: 同じ処理を行う条件をカンマでまとめることで、コードを簡潔に記述できます。

まとめ

Excel VBAのSelect Case文を使うことで、文字列比較を簡潔かつ柔軟に行うことができます。デフォルトでは大文字と小文字を区別しませんが、必要に応じてLCaseStrComp関数を使うことで、より細かな制御が可能です。また、Like演算子を使った部分一致や複数条件のグループ化など、さまざまな方法を組み合わせることで、複雑な条件分岐にも対応できます。

    -Select Case文, VBAで自動化, VBAテクニック集, VBA一覧, 文法・構文