マクロで多岐選択処理
マクロ講座25回 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メソッドをつかうのが良いということになります。
しかし、使うのは、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ステートメントを使います。
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
マクロを実行すると、点数の入力画面が表示され、
数値以外を入力すると、警告されます。
数値の場合は、処理が行われメッセージが表示されます。