Excel VBA

【Excel VBA】【マクロ】【Tips】IF条件分岐で文字列のORをコンパクトに書く(備忘録)

こんにちは!Lenocoです。本日も見てくださりありがとうございます。

今回はIf文についてのTips回です!!!

「月」「水」「金」のいずれかと一致する場合というIf文

たとえば、
【A1セルが「月」「水」「金」のいずれかと一致する場合】という
If文をORを使って作る場合、以下のようになるかと思います。

○よくある形

If Range("A1")="月" OR Range("A1")="水" OR Range("A1")="金" Then

End If

上記よりもっとシンプルに書く方法があります。

◎良い形

If Range("A1") Like "[月,水,金]" Then

End If

どちらもA1セルが「月」「水」「金」のいずれかだったらIf文に入る処理になります。
2つ目の方がかなりすっきりして見えますよね。
それに、もしセルの修正などがあったとしても、2つ目のほうが1か所のみ修正すればよいのでミスも減ると思います。

2つ便利な使い方を追加でご紹介します。

便利な使い方2つ

★1つ目(2文字以上で文字列比較をしたい)

上で紹介したやり方には1つ注意点があります。
この方法は、1文字のときのみ使用可能です。

A1セルに「月曜」と入っていて、以下のように設定してもIf文には入りません。

×良くない形

If Range("A1") Like "[月曜,水曜,金曜]" Then

End If

2文字以上で文字列比較をしたい場合は、以下のようにワイルドカード「*」を追加してください。 A1セルに「月」「水」「金」いずれか開始の文字列が入っていた場合If文の中に入ります。

◎良い形

If Range("A1") Like "[月,水,金]*" Then

End If

★2つ目(連続した文字の指定)

例えば、月~金いずれかだったらIf文に入るようにしたい場合、
以下のように指定できますが、

If Range("A1") Like "[月,火,水,木,金]" Then

End If

以下のように指定することで同じ動きとなります。

◎良い形

If Range("A1") Like "[月ー金]" Then

End If

数字などでも利用できます。

If Range("A1") Like "[0-9]" Then

End If

なるべく簡単でシンプルなコードを心がけたいですね。

Lenoco

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です