処理を分岐するマクロ

MsgBoxとIfステートメントを使って、「はい、いいえ」の処理を分岐するマクロの方法を説明します。

分岐の処理には、If~Then~Else ステートメント、If~Then~ElseIf ステートメント、Select Case ステートメントの分岐方法があります。

If~Then~Else ステートメントの条件処理

単一の条件式を調べ、条件式が真の場合は If~Then 以下の処理1のステートメントを実行し、それ以外の場合は Else 以下の処理2ステートメントを実行します。

  ■ コード内を「Wクリック」でコピーできます。

Sub サンプル0050()
  Dim Rtn As Integer

    MsgBox "これから条件分岐処理を実行します"
    
    Rtn = MsgBox("セルに数値を代入しますか", vbYesNo, "条件の選択")
       If Rtn = vbYes Then
        Range("A1") = 2000
    Else
        Range("A1") = "[いいえ]ボタンが押されました"
    End If
End Sub     
<コード説明>
• MsgBox "これから条件分岐処理を実行します" 
 ’メッセージボックスを表示します。
• Rtn = MsgBox("セルに数値を代入しますか", vbYesNo, "条件の選択")
 ’vbYesNoの返り値を変数Rtnに代入します。
• If Rtn = vbYes Then
 ’「はい」のときの処理
• Else
 ’「いいえ」のときの処理

●マクロの実行結果 

  1. マクロを実行すると、条件処理のMsgBoxが表示されます。
  2. 「はい、いいえ」のMsgBoxが表示されます。
  3. 「はい」を選択すると、数値が入ります。
  4. 「いいえ」を選択すると、メッセージが表示されます。

■ MsgBoxについて
1.MsgBox は関数で、コードに記述するとメッセージボックスが表示されます。
ダブルクオーテーションで囲った文字が、メッセージボックスに表示されます。

2.「vbYesNo」はメッセージボックスに「はい、いいえ」の2つのボタンを表示します。

If~Then~ElseIf ステートメントの条件処理

複数の条件式を調べ、条件式が真の場合は If~Then 以下の処理のステートメントを実行し、それ以外の場合は ElseIf 以下の処理ステートメントを実行します。

  ■ コード内を「Wクリック」で選択できます。

Sub サンプル0051()
    Dim Rtn As Long
        Rtn = Range("D6")
        
    If Rtn >= 50000 Then
       Range("D6").Interior.ColorIndex = 8
    ElseIf Rtn >= 30000 Then 
       Range("D6").Interior.ColorIndex = 6
    ElseIf Rtn < 30000 Then 
       Range("D6").Interior.ColorIndex = 3 
    End If
End Sub
<コード説明>
• Rtn = Range("D6") 
 ’Range("D6")の値を変数Rtnに代入します。
•  If Rtn >= 50000 Then
Range("D6").Interior.ColorIndex = 8
 ’Rtnが50000以上の時、セルの色を青色にします。
•  If Rtn >= 30000 Then
Range("D6").Interior.ColorIndex = 6
 ’Rtnが30000以上の時、セルの色を黄色にします。
•  If Rtn < 30000 Then
Range("D6").Interior.ColorIndex = 3
 ’Rtnが30000未満の時、セルの色を赤色にします。

●マクロの実行結果
Rtnが50000以上の時

Rtnが30000以上の時

Rtnが30000未満の時

Select Case ステートメント

Select Case ステートメントを使って処理を分岐します。
If~Then~Else ステートメントが真と偽の値を条件に分岐するのに対し、Select Case ステートメントは式の値にしたがって処理を分岐します。

  ■ コード内を「Wクリック」で選択できます。

Sub サンプル0052()
    Dim GetStr As String
    Dim Msg As String
    Dim Title As String
    
    Msg = "A1からA5までのセル番地を入力してください。"
    
    Title = "セル番地の選択"
    GetStr = InputBox(Msg, Title)
    GetStr = UCase(GetStr)
    
    Select Case GetStr
        Case "A1"
            Range("A1") = 1000
        Case "A2"
            Range("A2") = "こんにちは"
        Case "A3"
            Range("A3") = "2021/10/10"
        Case "A4"
            Range("A4") = 3.1415
        Case "A5"
            Range("A5") = 25000
        Case ""
        Case Else
            MsgBox "入力が間違っています。"
   End Select        
End Sub
<コード説明>
• Title = "セル番地の選択" 
 ’MsgBoxのタイトル名
• GetStr = InputBox(Msg, Title) 
 ’InputBox関数の値を変数GetStrに入れます。
• GetStr = UCase(GetStr) 
 ’UCase関数で入力された小文字(a1)を大文字(A1)に変換します。
• Select Case GetStr 
 ’Case GetStrの式をチェックして、条件式を実行します。
• Case "" 
 ’キャンセルボタンが押されたときは、Select Case ステートメントを終了します。
• Case Else 
 ’A1からA5以外の場合は、「入力が間違っています。」とメッセージを出します。

●マクロの実行結果
A1からA5の入力の時

A1からA5の入力以外の時

以上で「処理を分岐するマクロ」の説明を終わります。