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

- マクロを実行すると、条件処理のMsgBoxが表示されます。
- 「はい、いいえ」のMsgBoxが表示されます。
- 「はい」を選択すると、数値が入ります。
- 「いいえ」を選択すると、メッセージが表示されます。
■ MsgBoxについて
1.MsgBox は関数で、コードに記述するとメッセージボックスが表示されます。
ダブルクオーテーションで囲った文字が、メッセージボックスに表示されます。
2.「vbYesNo」はメッセージボックスに「はい、いいえ」の2つのボタンを表示します。

If~Then~ElseIf ステートメントの条件処理
複数の条件式を調べ、条件式が真の場合は If~Then 以下の処理のステートメントを実行し、それ以外の場合は ElseIf 以下の処理ステートメントを実行します。
■ コード内を「Wクリック」で選択できます。
Sub サンプル0051() Dim Rtn As Long Rtn = Range("D6") <pre><code>If Rtn &gt;= 50000 Then Range("D6").Interior.ColorIndex = 8 ElseIf Rtn &gt;= 30000 Then Range("D6").Interior.ColorIndex = 6 ElseIf Rtn &lt; 30000 Then Range("D6").Interior.ColorIndex = 3 End If</code></pre> 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 <pre><code>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 "入力が間違っています。"</code></pre> 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の入力以外の時

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