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 ステートメントなどの分岐方法があります。