Excel VBA

【お手軽条件分岐】エクセルVBAのSelect Caseを紹介

業務効率化ができるエクセルVBA。

単純な作業はマクロの記録で十分ですが、条件に応じて処理を変えたいことがあると思います。

条件分岐はIf文がありますが「条件が複雑でない場合」はSelect Caseの方が直観的に分かりやすいコードになります。

今回はエクセルVBAのSelect Caseについて紹介したいと思います。

こんな方におすすめ

  • マクロの記録で作ったプログラムをパワーアップしたい方
  • エクセルVBAの条件分岐を知りたい方
  • エクセルVBAでできることを知りたい方

Select Caseの基本的な書き方

早速Select Caseの基本的な書き方を紹介します。

Sub セレクトケースの書き方()
  Select Case '条件の対象を書く
    Case '条件1を書く
        '条件1に該当したときの処理を書く
    Case '条件2を書く
        '条件2に該当したときの処理を書く
    Case '条件3を書く
        '条件3に該当したときの処理を書く
  End Select

End Sub



  • Select Caseのルール1

    Select Case からEnd Selectでくくった間の処理が条件分岐になります。

    Select Caseの条件分岐を使う場合は、End Selectまで忘れずに書きます。


  • Select Caseのルール2

    条件の数だけ「Case 条件」を書きます。

    条件に合致した場合だけ処理がされるので、「Yes」か「No」のように分岐が少ない場合に便利な書き方です。

条件の対象について

Select Caseの条件の対象の例を紹介します。

  • 指定したセルの値
  • ユーザーフォームのボタンの値
  • メッセージボックスの値

指定する値がシンプルな場合はSelect Caseを使った条件分岐が便利です。

Select Caseの使用例を紹介

Select Caseの使用例を紹介します。

指定したセルの値

Select Caseを使えば、セルの値に応じてプログラムの条件分岐をすることができます。

Sub MessageBox()
  Select Case ThisWorkbook.Sheets("Sheet1").Range("A1")'Sheet1という名前のシートのA1セルの値を確認する。
    Case "実行する" 'A1セルの値が【実行する】の場合
      ThisWorkbook.Sheets("Sheet1").Range("B1") = 1 'B1セルに1を入力する。
    Case "実行しない" 'A1セルの値が【実行しない】の場合
      Exit Sub 'プログラムを終了する。
  End Select
End Sub


メモ

このプログラムを実行すると

  • A1セルに「実行する」という文字が入っている場合は、処理を実行
  • A1セルに「実行しない」という文字が入っている場合は、何も処理をしないでプログラムを終了

するようになっています。

※この場合は、「データの入力規則」を使って、入力できる値を制限すると扱いやすくなります。

ユーザーフォーム

ユーザーフォームのラジオボタンの操作によって、プログラムの動作を変えるときもSelect Caseが活躍します。

ラジオボタンを押した場合Trueと表示(押していないボタンはFalse)される性質を利用すれば「ボタン1がTrueの場合」「ボタン2がTrueの場合」と条件分岐を作ることもできます。

ユーザーフォームでボタンを作ったけど、プログラムが動かない場合は条件分岐を使うと便利です。

あとがき

今回はシンプルに条件分岐が作れるSelect Caseを紹介しました。

条件の種類が少ない場合は、コードがシンプルになるので管理がしやすいです。

マクロの記録に頼ってプログラムを書いている方は、作成したプログラムに条件分岐を加えることで、柔軟なプログラムに改造することができます。

条件分岐の中では理解もしやすいので気になった方は試してみてください。

-Excel VBA