【Excel VBA】条件分岐 IF文

■条件分岐 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以外)のとき

タイトルとURLをコピーしました