Excel マクロ 条件分岐(多岐選択)Select Caseステートメント

マクロで多岐選択処理

マクロ講座25回 SelectCaseステートメント
SelectCaseステートメント多岐選択処理

Select CaseステートメントとApplication.InputBox メソッド

条件分岐(多岐選択)Select Caseステートメント

SelectCaseステートメントを使うと、多岐選択処理を簡単に作成することができます。
与えられたデータをもとに複数の中から1つを選択し、処理を実行します。
また、今回はApplicationオブジェクトのInputBoxメソッドも学習します。
(サンプルファイルは、こちらから 2013マクロ講座25回サンプルデータ

InputBoxで点数を聞いて、Select Caseで処理する

24回でも利用したInputBoxでユーザーに点数を聞いて、条件分岐します。
しかし、使うのは、ApplicationオブジェクトのInputBoxメソッド

Excel VBAで使えるInputBoxは2つあり、
1つは、InputBox関数
2つめは、ApplicationオブジェクトのInputBoxメソッド

今回使うのは、ApplicationオブジェクトのInputBoxメソッド の方です。
InputBox関数とどこが違うかというと、InputBoxメソッドの方は、「Type」という引数を使えることです。

Type:=0 は、数式を受け取ります。
Type:=1 数値を受け取ります。
Type:=2 文字列を受け取ります。
Type:=4 論理値を受け取ります。
Type:=8 Rangeオブジェクトを受け取ります。

つまり、受け取るものを限定したい時に、ApplicationオブジェクトのInputBoxメソッドをつかうのが良いということになります。
コードですが、
tokutenを変数として宣言します。
Dim tokuten As Long

tokutenは、InputBoxメソッドで受け取ります。タイプは1で数値です。
tokuten = Application.InputBox(Prompt:="点数を入力してね", _
Title:="点数の入力", Type:=1)


数値以外を受け付けません。
次に、Select Caseステートメントを使います。


Sub 合否判定()
  Dim tokuten As Long
  tokuten = Application.InputBox(Prompt:="点数を入力してね", _
                        Title:="点数の入力", Type:=1)
  Select Case tokuten
    Case Is > 100
      MsgBox "入力しなおしてください。"
    Case 100
      MsgBox "やったね!おめでとう。"
    Case 70 To 99
      MsgBox "合格です"
    Case Else
      MsgBox "残念。不合格"
  End Select
End Sub
    
マクロを実行すると、点数の入力画面が表示され、

数値以外を入力すると、警告されます。

数値の場合は、処理が行われメッセージが表示されます。