■条件分岐 IF文
与えられた値に対して、
・もし〇〇だったら処理Aを実行
・もし××だったら処理Bを実行
・上記以外は処理Cを実行
と条件分岐して処理を実行したい場合は、IF文を使用する。
If 〇〇 then
処理A
ElseIf ×× Then
処理B
Else
処理C
End If
※ElseIfの項目は複数設定可能
■例題
以下のエクセルシートについて、
セルB2の値をチェック(取得)し、以下の条件分岐にて処理を実行する。
条件:
・取得した値が「1」ならば、メッセージボックスで ”値は「1」です” を出力
・取得した値が「2」ならば、メッセージボックスで ”値は「2」です” を出力
・取得した値が「3」ならば、メッセージボックスで ”値は「3」です” を出力
フロー図:
サンプルコード:
' シート名の定数(ここではシート名は「Main」シート)
Private Const SHEETNAME As String = "Main"
' チェック判定用セル行列(B2セルを想定)
Private Const CHECKROW As Integer = 2
Private Const CHECKCOL As Integer = 2
' メッセージボックス用の文言
Private Const MSGRESULT1 As String = "値は「1」です"
Private Const MSGRESULT2 As String = "値は「2」です"
Private Const MSGRESULT3 As String = "値は「3」です"
Private Const MSGRESULTA As String = "値は「1、2、3」以外です"
Public Sub ChkFunc()
Dim shtname As Worksheet ' ワークシート格納変数
Dim chkvalue As Integer ' チェックセルの値を格納する変数
' シート名を変数に格納
Set shtname = Sheets(SHEETNAME)
' チェック用の値を変数に格納
chkvalue = shtname.Cells(CHECKROW, CHECKCOL).Value
' チェック処理
If chkvalue = 1 Then
MsgBox MSGRESULT1
ElseIf chkvalue = 2 Then
MsgBox MSGRESULT2
ElseIf chkvalue = 3 Then
MsgBox MSGRESULT3
Else
MsgBox MSGRESULTA
End If
' 終了処理
Set shtname = Nothing
End Sub
実行結果:
①セルB2の値が「1」のとき
②セルB2の値が「2」のとき
③セルB2の値が「3」のとき
④セルB2の値が「4」(1、2、3以外)のとき