【Excel VBA】条件分岐 Select文

■条件分岐 Select文

与えられた値に対して、

・もし〇〇だったら処理Aを実行
・もし××だったら処理Bを実行
・上記以外は処理Cを実行

と条件分岐して処理を実行したい場合は、Select文を使用する。

Select Case インプットデータ 
    Case 〇〇
        処理A
    Case ××
        処理B
    Case △△
        処理C
    Case Else
        処理D
End Select

■例題

以下のエクセルシートについて、
セルD4の値をチェック(取得)し、以下の条件分岐にて処理を実行する。

条件:
90点以上なら「秀」
80点以上なら「優」
70点以上なら「良」
60点以上なら「可」
60点未満なら「不可」

フロー図:

サンプルコード:

' シート名の定数
Private Const SHEETNAME As String = "Main"

' チェック判定用セル行列(D4セルを想定)
Private Const CHECKROW As Integer = 4
Private Const CHECKCOL As Integer = 4

' 判定結果用セル行列(D5セルを想定)
Private Const RESULTROW As Integer = 4
Private Const RESULTCOL As Integer = 5

' 判定結果用の文言
Private Const RESULTFUKA    As String = "不可"
Private Const RESULTKA      As String = "可"
Private Const RESULTRYO     As String = "良"
Private Const RESULTYU      As String = "優"
Private Const RESULTSHU     As String = "秀"
Private Const RESULTERROR   As String = "エラー"

Public Sub ChkFunc()
    Dim shtname     As Worksheet    ' ワークシート格納変数
    Dim chkvalue    As Integer      ' チェックセルの値を格納する変数
    Dim resultvalue As String       ' 判定結果セル


    ' シート名を変数に格納
    Set shtname = Sheets(SHEETNAME)

    ' チェック用の値を変数に格納
    chkvalue = shtname.Cells(CHECKROW, CHECKCOL).Value

    ' 判定結果の値を変数に格納
    resultvalue = ""

    ' チェック処理
    Select Case chkvalue
        Case Is >= 90   ' 90点以上なら「秀」
            resultvalue = RESULTSHU
        Case Is >= 80   ' 80点以上なら「優」
            resultvalue = RESULTYU
        Case Is >= 70   ' 70点以上なら「良」
            resultvalue = RESULTRYO
        Case Is >= 60   ' 60点以上なら「可」
            resultvalue = RESULTKA
        Case Is < 60    ' 60点未満なら「不可」
            resultvalue = RESULTFUKA
        Case Else       ' それ以外なら「エラー」
            resultvalue = RESULTERROR
    End Select

    ' 判定結果をセルに格納
    shtname.Cells(RESULTROW, RESULTCOL).Value = resultvalue

    ' 終了処理
    Set shtname = Nothing

End Sub

実行結果:

①セルD4の値が「93」のとき


②セルD4の値が「88」のとき

③セルD4の値が「74」のとき

④セルD4の値が「61」のとき

⑤セルD4の値が「59」のとき

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