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

Ifステートメントで処理を分岐するマクロ

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

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

目次

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

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

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
’「いいえ」のときの処理

マクロの実行結果

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

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

vbYesNo

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

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

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

Sub サンプル0051()

Dim Rtn As Long
Rtn = Range("D6")
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

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 ステートメントは式の値にしたがって処理を分岐します。

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の入力以外の時

まとめ

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

目次