Excel マクロ 条件分岐(多岐選択)IF Then ElseIf ステートメント

ユーザーからの情報で条件分岐

マクロ講座24回 
IF Then ElseIf ステートメント条件分岐(多岐選択)

If~Then~ElseIfステートメント マクロ講座

InputBoxの情報から条件分岐

この記事では、Excel 2013でのマクロ講座24回目として「If~Then~ElseIfステートメント」を使用した条件分岐について学びます。
このステートメントを使うことで、ユーザーからの入力に基づいて複数の処理を選択して実行することができます。
特に、InputBox関数を用いてユーザーから情報を入力してもらい、その情報に基づいて処理を振り分ける方法について詳しく解説します。


この記事の内容

  • 1.If~Then~ElseIfステートメントの基本構文
  • 2.InputBox関数の使い方
  • 3.実際のコード例とその解説
  • 4.エラー処理の方法(IsNumeric関数の使用)

If~Then~ElseIfステートメントの基本構文

If~Then~ElseIfステートメントは、条件に基づいて異なる処理を実行するための構文です。以下のように書きます:

If 条件式 Then
    処理1
ElseIf 条件式2 Then
    処理2
ElseIf 条件式3 Then
    処理3
Else
    処理4
End If    

この構文を使うことで、複数の条件に基づいて処理を分岐させることができます。

多岐選択処理とは
複数の処理の中から1つだけ選んで実行することを多岐選択処理といいます。
構文として使うのは、If~Then~ElseIfステートメントです。

IF ~Then ~ElseIf ステートメントを使うと論理式を使った多岐選択処理を作成できます。
他に、Select Ifステートメントがあります。

If 条件式 Then ~ ElseIf~ElseIf ~ End If を使うと、
条件式の判定をいくつも書くことができます。

ダイアログボックスを表示してユーザーからの情報を文字列として入力してもらう便利な関数がInputBox関数です。
入力してもらった情報で条件分岐をして、点数を判断します

(サンプルファイルは、こちらから 2013マクロ講座24回サンプルデータ

InputBox関数の使い方

[構文]

InputBox(Prompt, Title, Default, Xpos, Ypos, HelpFile, Context)    
条件に一致するかどうかで処理を振り分けるIf~Then~Else Ifステートメントを使う際に、
ユーザーに情報を入力してもらうのは、InputBox関数で行います。
引数のPrompt以外は省略可能です。

「条件1」に一致する場合は「処理1」を実行
「条件1」に一致しない場合で「条件2」に一致する場合は「処理2」を実行
「条件1」「条件2」のいずれにも一致しない場合は「処理3」を実行
それ以外は「処理4」を実行
ユーザーにテストの点数を入力してもらい、優秀、まあまあ、危険、追試と判断を下すマクロです。
条件分岐は4通り

点数>=80 ・・・優秀
点数>=60 ・・・まあまあ
点数>=40 ・・・危険
点数< 40 ・・・追試

変数として点数を宣言します。
Dim 点数 As Integer

点数は、InputBoxから入力してもらいます
点数 = InputBox("テストの点数は何点ですか?", "テスト結果")
ここから条件分岐です。
もし点数が80点以上なら、MsgBoxでほめる。
If 点数 >= 80 Then
MsgBox "優秀です"


もし点数が60点以上なら、MsgBoxで少しほめる。
ElseIf 点数 >= 60 Then
MsgBox "まあまあです"


このように4通りの分岐をしていきます。
出来上がったコードを見てみましょう。

Sub 点数を入力してもらって判定()
    Dim tennsuu As Variant
    tennsuu = InputBox("テストの点数は何点ですか?", "kekka")
        If tennsuu >= 80 Then
            MsgBox "優秀です"
        ElseIf tennsuu >= 60 Then
            MsgBox "まあまあです"
        ElseIf tennsuu >= 40 Then
            MsgBox "危険です"
         Else
            MsgBox "追試です"
        End If
End Sub
    
マクロを実行すると、インプットボックスが表示されます。

点数を入力すると、条件の判定を行い処理を実行します。

IsNumeric 関数で判定。数値が入力されたら続行、文字なら中止

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