Excel VBA | ネストした Select Case

VBA
スポンサーリンク

では、さらにステップアップとして 「性別・年齢・職業を組み合わせた3段階ネスト」 の例を作ります。プログラミング初心者でも理解できるよう、丁寧に解説付きで示します。


1. 条件設定

  • セル A1:性別 (“男” または “女”)
  • セル B1:年齢(整数)
  • セル C1:職業 (“学生”、”会社員”、”自営業”)
  • 条件:
    1. 性別で大きく分ける
      • 男 → 内側で年齢判定
      • 女 → 内側で年齢判定
    2. 年齢でさらに分類
      • 20〜30 → 若い
      • 31〜50 → 中年
      • 51以上 → シニア
    3. 職業で最終メッセージ
      • 学生 → 「学生です」
      • 会社員 → 「会社員です」
      • 自営業 → 「自営業です」
      • その他 → 「不明な職業です」

2. 解答例

Sub 性別年齢職業判定()
    Dim gender As String
    Dim age As Integer
    Dim job As String
    
    gender = Range("A1").Value
    age = Range("B1").Value
    job = Range("C1").Value
    
    Select Case gender
        Case "男"
            ' 男性の場合
            Select Case age
                Case 20 To 30
                    ' 若い男性
                    Select Case job
                        Case "学生"
                            MsgBox "若い男性の学生です"
                        Case "会社員"
                            MsgBox "若い男性の会社員です"
                        Case "自営業"
                            MsgBox "若い男性の自営業です"
                        Case Else
                            MsgBox "若い男性、職業不明です"
                    End Select
                Case 31 To 50
                    ' 中年男性
                    Select Case job
                        Case "学生"
                            MsgBox "中年男性の学生です"
                        Case "会社員"
                            MsgBox "中年男性の会社員です"
                        Case "自営業"
                            MsgBox "中年男性の自営業です"
                        Case Else
                            MsgBox "中年男性、職業不明です"
                    End Select
                Case Is >= 51
                    ' シニア男性
                    Select Case job
                        Case "学生"
                            MsgBox "シニア男性の学生です"
                        Case "会社員"
                            MsgBox "シニア男性の会社員です"
                        Case "自営業"
                            MsgBox "シニア男性の自営業です"
                        Case Else
                            MsgBox "シニア男性、職業不明です"
                    End Select
                Case Else
                    MsgBox "男性、年齢不明です"
            End Select
            
        Case "女"
            ' 女性の場合
            Select Case age
                Case 20 To 30
                    ' 若い女性
                    Select Case job
                        Case "学生"
                            MsgBox "若い女性の学生です"
                        Case "会社員"
                            MsgBox "若い女性の会社員です"
                        Case "自営業"
                            MsgBox "若い女性の自営業です"
                        Case Else
                            MsgBox "若い女性、職業不明です"
                    End Select
                Case 31 To 50
                    ' 中年女性
                    Select Case job
                        Case "学生"
                            MsgBox "中年女性の学生です"
                        Case "会社員"
                            MsgBox "中年女性の会社員です"
                        Case "自営業"
                            MsgBox "中年女性の自営業です"
                        Case Else
                            MsgBox "中年女性、職業不明です"
                    End Select
                Case Is >= 51
                    ' シニア女性
                    Select Case job
                        Case "学生"
                            MsgBox "シニア女性の学生です"
                        Case "会社員"
                            MsgBox "シニア女性の会社員です"
                        Case "自営業"
                            MsgBox "シニア女性の自営業です"
                        Case Else
                            MsgBox "シニア女性、職業不明です"
                    End Select
                Case Else
                    MsgBox "女性、年齢不明です"
            End Select
            
        Case Else
            MsgBox "性別不明です"
    End Select
End Sub
Java

3. 解説

  1. 3段階のネスト構造
    • 外側:性別 → 男 or 女 or 不明
    • 中間:年齢 → 若い・中年・シニア
    • 内側:職業 → 学生・会社員・自営業・不明
  2. ポイント
    • 条件が複雑でも、ネストすることで整理して書ける
    • Case Else を必ず書くことで、予期しない値に対応できる
    • メッセージを MsgBox にすることで、動作確認が簡単
  3. 初心者向けのコツ
    • ネストが深くなる場合は、まず紙に条件の表を作って整理してから書くとわかりやすい
    • 内側の Select Case は、外側の条件を満たした場合にのみ実行される

💡 さらに応用すると、

  • 「職業が学生かつ20歳未満なら特別メッセージ」
  • 「年齢が50以上かつ会社員なら定年関連メッセージ」

のように 複雑な条件を追加しても、ネストを使えば整理して書けます

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