VBAで条件分岐を作成していると、
「この文字か、あの文字が含まれていたら処理する」
「複数のキーワードに一致したら同じ処理をしたい」
といった場面は非常に多くあります。
たとえば:
- 「エラー」「警告」「未処理」が含まれていたら対応する
- 「東京」「大阪」「名古屋」のいずれかなら担当部署を振り分ける
- 「完了」または「終了」なら次の処理へ進む
このような処理は、Like演算子と複数条件を組み合わせることで実現できます。
しかし実務では:
- 条件が増えるたびにコードが長くなる
- 修正のたびに不具合が発生する
- どこを変更すればいいか分からなくなる
といった問題が起きやすい分野でもあります。
この記事では、
VBAにおけるLike演算子で複数条件を扱う方法について、
- 基本的な書き方
- 条件が増えても壊れない設計
- 保守性・再利用性を高める実装方法
まで含めて、実務目線で解説します。
目次
- ✅ VBA Like演算子で複数条件を扱う基本|OR条件の最初の書き方
- ・基本構文:OR条件を使った複数一致
- ・ この書き方の意味
- ・ なぜこの書き方が基本になるのか(設計意図)
- ✅ Like演算子の複数条件が増えたときに起きる問題|実務でよくある失敗
- ・条件が増えすぎた例
- ・ このコードの問題点
- ・ 実務での典型的なトラブル
- ✅ 配列を使ってLike演算子の複数条件を安全に管理する|壊れない設計の基本
- ・推奨構文:配列とループを使う
- ・ なぜこの書き方にしているのか(設計意図)
- ・ 別の書き方とのメリット差
- ・ 実務での最大のメリット
- ✅ Like演算子の複数条件を関数化する設計|再利用性と保守性を高める
- ・Function化した安全な設計
- ・ なぜこの設計にしているのか
- ・ 実務での注意点
- ✅ 実務で最も重要な判断:Like演算子を使うべき場面と使わない場面
- ・Like演算子を使う場面
- ・Like演算子を使わない場面
- ✅ まとめ:Like演算子の複数条件は「書き方」ではなく「管理」で決まる
✅ VBA Like演算子で複数条件を扱う基本|OR条件の最初の書き方
Like演算子を使った複数条件は、VBAで非常によく使われる処理です。
しかし、多くの人が最初に書くコードは「とりあえず動く」レベルで止まってしまい、後から条件が増えたときに大きな負担になります。
特に、業務では条件が固定されることはほとんどなく、追加や変更が頻繁に発生します。
そのため、最初の段階から「増えること」を前提にした書き方を意識することが重要です。
また、条件分岐は業務ロジックの中心になるため、ここが読みづらいと保守が難しくなります。
小さな違いに見えても、後々の作業効率に大きな差が出てきます。
まずは、最も基本的な書き方を確認しておきましょう。
・基本構文:OR条件を使った複数一致
Dim commentText As String
commentText = Range("A2").Value
If commentText Like "*エラー*" _
Or commentText Like "*警告*" _
Or commentText Like "*未処理*" Then
MsgBox "対応が必要です。"
End If
・ この書き方の意味
「エラー」「警告」「未処理」のいずれかが含まれていたら処理する
・ なぜこの書き方が基本になるのか(設計意図)
この書き方は:
条件が明確に読める
という点が最大のメリットです。
つまり:
誰が見ても意味が分かる
コードになります。
✅ Like演算子の複数条件が増えたときに起きる問題|実務でよくある失敗
最初は3つ程度の条件でも、業務が進むにつれて条件は増えていきます。
このとき、同じ書き方を続けていると、コードが急激に読みにくくなります。
また、1つの条件を修正しただけで、別の条件に影響してしまうこともあります。
さらに、条件の抜け漏れや重複が発生することも珍しくありません。
この問題は、コードの書き方ではなく、設計の問題です。
つまり、「条件が増えること」を前提にしていないことが原因になります。
ここでは、典型的な失敗パターンを確認しておきましょう。
・条件が増えすぎた例
If commentText Like "*エラー*" _
Or commentText Like "*警告*" _
Or commentText Like "*未処理*" _
Or commentText Like "*確認*" _
Or commentText Like "*再送*" _
Or commentText Like "*対応中*" Then
・ このコードの問題点
条件が増えるほど読みづらくなる
さらに:
追加・削除が危険になる
という問題があります。
・ 実務での典型的なトラブル
条件を1つ削除したつもりが別の条件を消してしまう
これは非常によく起きます。
条件が増えてきたときに重要になるのは、単に条件を追加することではなく、「どのように条件を組み合わせるか」という設計の考え方です。
AND条件やOR条件を正しく整理する方法については、「【VBA】IF文のandとorを組み合わせた複数条件|実務で迷わない条件設計」もあわせて確認しておくと、複雑な条件分岐でも安全に管理できるようになります。
✅ 配列を使ってLike演算子の複数条件を安全に管理する|壊れない設計の基本
複数条件を安全に扱うためには、条件をコードではなく「データ」として管理することが重要です。
この考え方を導入するだけで、保守性が大きく向上します。
また、条件を追加するときにも、コードの構造を変更する必要がなくなります。
つまり、仕様変更に強い設計になります。
この方法は、小規模なマクロでも大規模なシステムでも共通して使われています。
最初は少し複雑に見えるかもしれませんが、長期的には必ずメリットがあります。
ここでは、最も基本的で安全な実装方法を確認していきましょう。
・推奨構文:配列とループを使う
Dim keywords As Variant
Dim i As Long
keywords = Array("エラー", "警告", "未処理")
For i = LBound(keywords) To UBound(keywords)
If commentText Like "*" & keywords(i) & "*" Then
MsgBox "対応が必要です。"
Exit For
End If
Next i
・ なぜこの書き方にしているのか(設計意図)
ポイントは:
条件を一覧として管理している
ことです。
・ 別の書き方とのメリット差
従来:
条件を1つずつ書く
改善後:
条件をまとめて管理する
・ 実務での最大のメリット
条件を1行追加するだけで対応できる
これは非常に大きな違いです。
✅ Like演算子の複数条件を関数化する設計|再利用性と保守性を高める
同じ条件判定を複数の場所で使用する場合、コードをコピーして使い回すと管理が難しくなります。
たとえば、判定ルールが変更された場合、すべてのコードを修正しなければならなくなります。
これは非常に危険な状態です。
また、修正漏れが発生する可能性も高くなります。
そのため、重要なロジックは関数として切り出し、1か所で管理することが推奨されます。
この設計は、長期的な運用において非常に重要です。
ここでは、安全に再利用できる関数の例を確認していきましょう。
・Function化した安全な設計
Function ContainsAnyKeyword(ByVal inputText As String, _
ByVal keywordList As Variant) As Boolean
Dim i As Long
Dim normalizedText As String
normalizedText = Trim(inputText)
For i = LBound(keywordList) To UBound(keywordList)
If normalizedText Like "*" & keywordList(i) & "*" Then
ContainsAnyKeyword = True
Exit Function
End If
Next i
ContainsAnyKeyword = False
End Function
・ なぜこの設計にしているのか
この関数は:
複数条件の判定ルールを1か所にまとめている
という点が重要です。
・ 実務での注意点
必ず:
前処理(Trim)を入れる
これが基本です。
処理を関数として切り出すことができるようになると、次に重要になるのは「どの情報を呼び出し元に返すか」という設計です。
戻り値を活用して処理全体を整理する考え方については、「【VBA】プロシージャの戻り値の活用方法|Function設計で処理を整理する」もあわせて確認しておくと、より再利用性の高いコードを構築できるようになります。
✅ 実務で最も重要な判断:Like演算子を使うべき場面と使わない場面
Like演算子は非常に便利ですが、すべての場面で使うべきではありません。
特に、厳密な一致が求められる場面では、部分一致は危険になることがあります。
たとえば、社員番号や商品コードなどでは、1文字違うだけで意味が変わります。
このようなデータに対して部分一致を使うと、重大な誤判定につながる可能性があります。
つまり、Like演算子は「便利な道具」であり、「万能」ではありません。
ここで、使うべき場面と避けるべき場面を整理しておくことが重要です。
この判断が、安定したシステムを作るための基礎になります。
・Like演算子を使う場面
コメント検索
住所検索
キーワード判定
エラー検出
・Like演算子を使わない場面
社員番号
商品コード
ID
数値コード
条件が増えてきたときに重要になるのは、単にコードを書き足すことではなく、「どのように設計するか」という視点です。
マクロが複雑化して管理できなくなる前に押さえておきたい基本的な考え方については、「Excelマクロがブラックボックス化する前に考える設計の考え方」もあわせて確認しておくと、長期的に安定した仕組みを構築できるようになります。
✅ まとめ:Like演算子の複数条件は「書き方」ではなく「管理」で決まる
今回の内容を整理すると、Like演算子の複数条件は単なる構文ではなく、
条件をどう管理するかという設計の問題であることが分かります。
- Like演算子は複数条件を簡単に扱える
- 条件が増えるとコードが読みにくくなる
- 配列を使うと保守性が向上する
- 関数化すると再利用性が高まる
- 条件はコードではなくデータとして管理する
- 部分一致は用途を選ぶ必要がある
そして最も重要なのは:
条件は増えるものとして設計する
という考え方です。
この視点を持つことで、
将来の仕様変更や業務拡張にも耐えられる、
壊れない条件分岐を作ることができるようになります。