Excelマクロ、VBA

ExcelマクロとVBA入門⑩:Select Caseステートメントの使い方を解説

こんにちは、はやぶさです。

日々ExcelやPythonを使って、業務を効率化しています。

前回のExcelマクロとVBA入門シリーズでは、条件分岐を扱う「IFステートメント」に焦点を当てて解説しました。

ExcelマクロとVBA入門⑨:IFステートメントの使い方を解説この記事では、プログラミングにおける条件分岐の核であるIFステートメントの理解を深め、その使用方法と具体的な例を通じて、ExcelマクロとVBAにおけるプログラミングスキルの向上を目指します。IFステートメントの基本構文から応用テクニック、さらには一行IFステートメントの利用方法まで、幅広くカバーします。...

今回はその続編として、「Select Caseステートメント」にスポットを当てます。

Select Caseステートメントも、IFステートメントと同じく条件分岐を扱いますが、特定のシナリオではより便利で読みやすいコードを書くことが可能です。

この記事では、Select Caseステートメントの基本から応用、IFステートメントとの比較や使い分けに至るまで、詳細にわたり解説します。

VBAにおけるプログラミングスキルをさらに向上させたい方々にとって、この記事が貴重な洞察と実用的な知識を提供し、作業のさらなる効率化に役立つことを願っています。

Select Caseステートメントとは?

Select Caseステートメントは、一つの対象の値を基にした条件分岐を効果的に扱うのに適しています。

このステートメントは、数値、文字列、日付などの多様なデータ型を検証対象として取り扱い、指定された複数のケース(条件)と比較して、該当するケースのコードブロックを実行します。

IFステートメントと比較するとSelect Caseは構文が簡潔なため、コードの読みやすさと書きやすさを向上させ、全体の可読性を高めます。

特に、複数の条件を処理する必要がある際には、Select CaseはIFステートメントよりも適した選択肢になります。

IFステートメントとの比較

IFステートメントは、条件分岐が少ない場合や複数の変数が絡む複雑な条件を扱う場合に最適です。

しかし、条件分岐の数が増えるにつれて、コードの可読性が低下する傾向にあります。

Select Caseステートメントは、一つの変数や式に基づいた複数の条件分岐を効率的に扱うのに適しています。

特に、多くの固定値による分岐が必要な場合、Select Caseはコードの可読性と管理の容易さを大幅に向上させます。

使用シナリオ

  • IFステートメントは適している場合:
    • 複数の変数や複雑な論理条件が分岐の決定に関わる。
    • 条件分岐の数が少ない。
  • Select Caseは適している場合:
    • 分岐の基となるのが一つの変数や式の値。
    • 条件分岐の数が多い。

IFステートメントを用いる場合、各分岐で条件を評価するために変数名を繰り返し記述する必要があり、これがコードの冗長性と可読性の低下を引き起こします。

これに対して、Select Caseステートメントでは比較対象を一度指定するだけで済むため、コードがすっきりとし、より読みやすくなります。

基本的な使い方

Select Caseステートメントでは、[対象]が指定されたいずれかのCaseと一致すると、対応するコードブロックが実行されます。

プログラムは上から順番に検証され、最初に一致した条件のコードブロックのみを実行し、それ以降のCaseは無視されます。

どのCaseにも一致しない場合、Case Elseに記述されたコードブロックが実行されますが、このCase Elseの記述は必須ではありません。

基本構文

以下の例では、月の値に応じて誕生石をメッセージボックスに表示します。

この例では、月の値によって、対応するメッセージボックスが表示されるようになっています。

無効な値が入力された場合は、「無効な月です」というメッセージが表示される仕組みです。

複数の条件を指定する

コンマを使用したOr条件の指定

コンマを使用して複数の条件をOrとして指定できることは、IFステートメントに比べてSelect Caseを用いた方がコードを簡素化できる点です。

基本構文

IFステートメントによる条件分岐の例:

Toキーワードによる範囲条件の指定

Toキーワードを用いることで、連続するデータに対する操作を簡潔に記述できることは、IFステートメントに比べてSelect Caseを用いた方がコードを簡素化できる点です。

基本構文

IFステートメントによる条件分岐の例:

Select Case文でToを使用することにより、範囲を示す条件を扱う際に、コードの可読性を向上させ、複雑性を減少させます。

Isキーワードによる比較条件の指定

Isキーワードを使用することで直接的な比較演算が可能になることは、Select Caseステートメントの柔軟性と正確性を強調しています。

基本構文

Isキーワードにより、Select Case文内で直接、等価性(=, <>)や大小関係(<, <=, >, >=)などの様々な比較演算を行うことができます。

IFステートメントによる条件分岐の例:

これまでに紹介した「コンマ」、「To」、「Is」を使用した条件指定方法を組み合わせることで、Select Caseステートメントは複雑な条件分岐も簡潔に扱えます。

例えば、以下のコードでは、具体的な値、範囲指定、Isを使用した条件式を組み合わせて、多様なシナリオをカバーしています。

順次進行の管理

Select Caseステートメントでは、条件は上から順に評価され、最初にTrueとなる条件の処理が実行されます。

この特性を理解し、条件を適切な順序で配置することがプログラムの正確な制御に不可欠です。

より具体的な条件を前に、一般的な条件を後ろに配置することで、予期しない挙動を防ぎます。

悪い例:

次の例では、整数が3の倍数、5の倍数、またはその両方である場合に異なるメッセージを表示します。

最も特定的な条件が最後に来るため、整数が15の場合、「バカな犬になる」ではなく「バカになる」と表示されてしまいます。

良い例:

こちらの例では、最も具体的な条件を先に評価しています。

この順序により、整数が3と5の両方の倍数である場合に正しいメッセージが表示され、プログラムの挙動が期待通りになります。

このように条件の優先順位を適切に設定することで、Select Caseステートメントを用いたプログラムが意図した通りに正確に動作させることができます。

まとめ

この記事では、Select Caseステートメントの基礎から応用まで、その使用方法と具体例について詳しく解説しました。

Select Caseステートメントの適切な活用により、特定のシナリオにおいてIFステートメントよりも読みやすく便利なコードを記述することができます。

さまざまな書き方を試し、その便利さを実感してみてください。

キーポイント

  • Select Caseステートメントとは?: 一つの対象の値に基づく条件分岐を扱う際に適したステートメントで、条件分岐の処理を簡潔に記述できます。
  • IFステートメントが適している場合: 複数の変数や複雑な論理条件が分岐の決定に関わる、または条件分岐の数が少ない場合に適します。
  • Select Caseが適している場合: 分岐の基が一つの変数や式の値であり、条件分岐の数が多い場合に適します。
  • 基本的な使い方: 指定されたいずれかのCaseと[対象]が一致すると、対応するコードブロックが実行されます。
  • 複数の条件を指定する: 「コンマ」、「To」、「Is」を使用した条件指定方法を組み合わせることで、複雑な条件分岐を簡潔に扱えます。
  • 順次進行の管理: 条件は上から順に評価され、最初に真となる条件の処理が実行されます。この特性を利用し、条件を適切な順序で配置することが、プログラムの正確な制御に必要です。

プログラミングは学習と実践の繰り返しです。諦めずに継続することで、やがては複雑な問題も解決できるようになります。

この記事が、Excel VBAの世界への興味をさらに深め、日々の作業を効率化するためのツールとしてExcelマクロとVBAを活用する一助となることを願っています。

はやぶさ
中小企業の中間管理職をしており、ExcelマクロやPythonを活用して業務の自動化に取り組んでいます。

今働いている職場を、ITの力でより良い環境にできるよう、知識や経験を共有していきたいと考えています。