Excel 2013 マクロ講座InputBoxの情報から条件分岐
If〜Then〜ElseIfステートメント Excel2013 マクロ講座
InputBoxの情報から条件分岐
複数の処理の中から1つだけ選んで実行することを多岐選択処理といいます。
構文として使うのは、If〜Then〜ElseIfステートメントです。
IF ~Then ~ElseIf ステートメントを使うと論理式を使った多岐選択処理を作成できます。
他に、Select Ifステートメントがあります。
If 条件式 Then 〜 ElseIf〜ElseIf 〜 End If を使うと、条件式の判定をいくつも書くことができます。
ダイアログボックスを表示してユーザーからの情報を文字列として入力してもらう便利な関数がInputBox関数です。
入力してもらった情報で条件分岐をして、点数を判断します
(サンプルファイルは、こちらから 2013マクロ講座24回サンプルデータ)
条件に一致するかどうかで処理を振り分けるIf~Then〜Else Ifステートメント
ユーザーに情報を入力してもらうのは、InputBox関数
[構文]
InputBox(Prompt, Title, Default, Xpos, Ypos, HelpFile, Context)
引数のPrompt以外は省略可能です。

[構文]
InputBox(Prompt, Title, Default, Xpos, Ypos, HelpFile, Context)
引数のPrompt以外は省略可能です。

「条件1」に一致する場合は「処理1」を実行
「条件1」に一致しない場合で「条件2」に一致する場合は「処理2」を実行
「条件1」「条件2」のいずれにも一致しない場合は「処理3」を実行
それ以外は「処理4」を実行
「条件1」に一致しない場合で「条件2」に一致する場合は「処理2」を実行
「条件1」「条件2」のいずれにも一致しない場合は「処理3」を実行
それ以外は「処理4」を実行
ユーザーにテストの点数を入力してもらい、優秀、まあまあ、危険、追試と判断を下すマクロです。
条件分岐は4通り
点数>=80 ・・・優秀
点数>=60 ・・・まあまあ
点数>=40 ・・・危険
点数< 40 ・・・追試
変数として点数を宣言します。
Dim 点数 As Integer
点数は、InputBoxから入力してもらいます
点数 = InputBox("テストの点数は何点ですか?", "テスト結果")
条件分岐は4通り
点数>=80 ・・・優秀
点数>=60 ・・・まあまあ
点数>=40 ・・・危険
点数< 40 ・・・追試
変数として点数を宣言します。
Dim 点数 As Integer
点数は、InputBoxから入力してもらいます
点数 = InputBox("テストの点数は何点ですか?", "テスト結果")
ここから条件分岐です。
もし点数が80点以上なら、MsgBoxでほめる。
If 点数 >= 80 Then
MsgBox ("優秀です")
もし点数が60点以上なら、MsgBoxで少しほめる。
ElseIf 点数 >= 60 Then
MsgBox ("まあまあです")
このように4通りの分岐をしていきます。
もし点数が80点以上なら、MsgBoxでほめる。
If 点数 >= 80 Then
MsgBox ("優秀です")
もし点数が60点以上なら、MsgBoxで少しほめる。
ElseIf 点数 >= 60 Then
MsgBox ("まあまあです")
このように4通りの分岐をしていきます。
スポンサーリンク
スポンサーリンク
出来上がったコードを見てみましょう。

Sub テストの結果()
Dim 点数 As Integer
点数 = InputBox("テストの点数は何点ですか?", "テスト結果")
If 点数 >= 80 Then
MsgBox ("優秀です")
ElseIf 点数 >= 60 Then
MsgBox ("まあまあです")
ElseIf 点数 >= 40 Then
MsgBox ("危険です")
Else
MsgBox ("追試です")
End If
End Sub
マクロを実行すると、インプットボックスが表示されます。


点数を入力すると、条件の判定を行い処理を実行します。
数値が入力されたら続行、文字なら
上記のコードでは、へそ曲がり君が
文字を入力した場合や[キャンセル]ボタンをクリックした場合は工ラーになってしまいます。
工ラー回避する場合は、まず変数をVariant バリアント型にします。
また数値が、入力されたら処理を続行し、文字列が入力された場合は処理を中止するようにしましょう。 入力されたデータが数値かどうかを調べるために、ここではIsNumeric関数を使用します。
工ラー回避する場合は、まず変数をVariant バリアント型にします。
また数値が、入力されたら処理を続行し、文字列が入力された場合は処理を中止するようにしましょう。 入力されたデータが数値かどうかを調べるために、ここではIsNumeric関数を使用します。
Sub テストの結果2()
Dim 点数 As Variant
点数 = InputBox("テストの点数は何点ですか?", "テスト結果")
If IsNumeric(点数) Then
If 点数 >= 80 Then
MsgBox ("優秀です")
ElseIf 点数 >= 60 Then
MsgBox ("まあまあです")
ElseIf 点数 >= 40 Then
MsgBox ("危険です")
Else
MsgBox ("追試です")
End If
Else
MsgBox ("数値が入力されませんでした。終了します。")
End If
End Sub
今日はこれまでです。お疲れ様でした。
スポンサーリンク
スポンサーリンク