【VBA入門】Select Caseで複数の条件分岐(Or/To/Is/Likeも解説)

条件分岐が多い場合に便利 Select Caseステートメント

あなたはExcelVBAの複数の条件分岐で、Select Caseステートメントって使ってますか?

Select Caseステートメントは条件によって処理を分ける数が多い場合に使われます。例えばサイコロの目は1から6までありますが、1から6までの出た目でそれぞれ処理が違う場合などです。

この記事では、Select Caseステートメントについての基礎から、

  • Like演算子を使ったあいまい条件の使い方
  • Andで複数条件を指定する場合


など応用的な内容についても解説していきます!

Select Caseとは(If文との使い分け)

Select Caseステートメントは複数の条件により処理を分岐させたい場合に使用します。

条件により処理を分岐させる構文としてIf文もありますが、If文は分岐の数が少ない場合に使用します。if文では分岐が多くなると読みにくくなるため、分岐の数が多い場合にSelect Caseステートメントが使われます。

if文についてはこちらの記事で詳しく解説しているので、詳しく知りたい方はぜひ確認してください。

VBAのIf文を使いこなそう! 条件分岐の基本をスッキリ解説
更新日 : 2019年4月25日

Select Caseの使い方

文法と基本的な使い方

Select Caseステートメントは以下のように記述します。

変数が条件式と合致するか条件式がTrueの場合に、それ以降の処理を実行します。

条件式がFalseの場合は次の条件式に移ります。どのCaseの条件式にも当てはまらない場合は、Case Else以降の処理を実行します。

それではサンプルコードで確認していきましょう。

実行結果:
SelectCase01

複数条件(Or)を指定する場合

Caseの条件式を複数指定することができます。複数の条件は以下のように「,」(カンマ)で区切ります。

条件式のどれかを満たすと、それ以降の処理が実行されます。

サンプルコードで確認していきましょう。

実行結果:
SelectCase01

Toで範囲指定をする場合

Caseの条件式は以下のようにToキーワードを使って範囲を指定することもできます。

サンプルコードで確認していきましょう。

実行結果:
SelectCase01

Isで比較条件を指定する場合

Isキーワードを使って比較条件を指定することもできます。

サンプルコードで確認していきましょう。

実行結果:
SelectCase02

Like演算子を使ったあいまい条件の使い方(ワイルドカード)

以下のようにLike演算子を使って部分的に合致した場合の条件分岐を記述することができます。

条件式には「*」(アスタリスク)などのワイルドカードを使います。ワイルドカードには以下のようなパターンを指定できます。

パターン説明
?任意の1文字
*任意の数の文字
#任意の1文字の数字(半角)
[charlist]リストcharlistに指定した文字の中の任意の1文字
[!charlist]リストcharlistに指定した文字以外の任意の1文字

サンプルコードで確認しましょう。

実行結果:
SelectCase01

このサンプルコードでは、String型変数strをLike演算子を使ってそれぞれの場合で比較しています。ワイルドカードを使った文字列”中*”とstrのパターンが一致しています。

Like演算子の使い方については、こちらで詳しく解説していますので、ぜひ参考にしてください。

【VBA入門】Like演算子(ワイルドカード、エスケープ、否定)
更新日 : 2019年4月19日

Andで複数条件を指定する場合

Select caseステートメントについて複数条件で分岐する方法についてお伝えしてきました。

Or条件の場合は「,」記号を使ったり、範囲を指定する場合はToキーワードを使用します。また、文字列のパターンに合っているかどうかで条件分岐する場合はLike演算子を使います。

そこで、Andでの複数条件で条件分岐する方法がないか疑問に思かもしれません。しかし、そのような記述はありません。

1変数の数値の場合はToキーワードを使っての範囲指定で十分なので、Andで複数条件を指定する必要はありません。1変数の文字の場合はLike演算子でワイルドカード文字などを使ってパターンマッチングすればいいので、Andで複数条件を指定する必要はありません。

また、複数の変数をAnd条件で条件分岐することはSelect Caseステートメントではできません。もし、複数の変数で条件分岐したい場合ならIf文を使うようにしましょう

If文でのAndやOrなどの論理演算子の使い方については、こちらで詳しく解説していますので、ぜひ参考にしてください。

VBAのIf文を使いこなそう! 条件分岐の基本をスッキリ解説
更新日 : 2019年4月25日

VBA以外の選択肢も

今回解説したVBAの条件分岐が行えると様々な業務が効率化できる大切なスキルではありますが、このままVBAを学び続けるなら親和性のあるプログラミング学習に挑戦してみることもおすすめです。

  • VBAは社内出世など、会社にずっと属していく人のみに必要
  • AIの発達によってVBAで条件を組まなくても良くなる可能性も
  • 人材不足かつ、市場か伸びているのはプログラミング、スキル次第で人生に選択肢が増える

これらの理由から、せっかくVBAというスキルを身につけようとしているなら親和性のあるプログラミングの方が、あなたの人生に選択肢や可能性を増やすのでは?と思います。

でもVBAでも精一杯なのにプログラミング?難しそう。

そんな心配をしているあなたでも大丈夫です。侍エンジニア塾ではあなたの目標や性格を踏まえて適切な講師を配属させていただき、マンツーマンで指導していくため、着実にスキルアップしていくことができます。

また、あなたの目標に対して現在のスキルや興味のある分野から最適な学習カリキュラムを作るフルオーダーメイドカリキュラムを作成いたします。これによりあなたの興味関心と授業のカリキュラムが完全にあった状態で学習できるため、確実に未来に繋がる実感を持ちながら学習ができます。

まずはあなたの興味や関心からおすすめの言語を判定するプログラミング学習診断アプリを受けてみてください。

質問に答えていくだけで、最適な言語やスキルと学習期間を提案いたします。

プログラミング言語診断を受ける

まとめ

ここでは、Select Caseステートメントについて説明しました。Select Caseステートメントは条件によって分岐が多い場合に使うと便利です。

使いこなすことができるように、この記事を何度も参考にして下さいね!

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

長野 透

長野 透

熊本在住のフリープログラマ兼ライターです。C/C++/C#、Java、Python、HTML/CSS、PHPを使ってプログラミングをしています。専門は画像処理で最近は機械学習、ディープラーニングにはまっています。幅広くやってきた経験を活かしてポイントをわかりやすくお伝えしようと思います。
お問合せはこちらでも受け付けています。
[email protected]

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説