アフィリエイト広告を利用しています

処理を分岐するマクロ

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 >= 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</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
&lt;pre&gt;&lt;code&gt;Msg = &quot;A1からA5までのセル番地を入力してください。&quot;

Title = &quot;セル番地の選択&quot;
GetStr = InputBox(Msg, Title)
GetStr = UCase(GetStr)

Select Case GetStr
    Case &quot;A1&quot;
        Range(&quot;A1&quot;) = 1000
    Case &quot;A2&quot;
        Range(&quot;A2&quot;) = &quot;こんにちは&quot;
    Case &quot;A3&quot;
        Range(&quot;A3&quot;) = &quot;2021/10/10&quot;
    Case &quot;A4&quot;
        Range(&quot;A4&quot;) = 3.1415
    Case &quot;A5&quot;
        Range(&quot;A5&quot;) = 25000
    Case &quot;&quot;
    Case Else
        MsgBox &quot;入力が間違っています。&quot;&lt;/code&gt;&lt;/pre&gt;
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の入力以外の時

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

目次