★If...Then...Else 入れ子
 


  条件式1 一致   →  条件式2 一致   →  Aの処理
  条件式1 一致   →  条件式2 不一致  →  Bの処理
  条件式1 不一致  →   条件式3 一致    →  Cの処理
  条件式1 不一致  →   条件式3 不一致  →  Dの処理

  If 条件式 1 Then
      
     If 条件式 2 Then   ・・・条件1に一致して、条件2にも一致

       Aの処理

     Else             ・・・条件1に一致して、条件2には不一致

       Bの処理

     End If

  Else

     If 条件式 3 Then   ・・・条件1に不一致で、条件3とは一致

       Cの処理

     Else             ・・・条件1に不一致で、条件3とも不一致

       Dの処理

     End If

  End If
  入れ子の例ってどんなのがあるのか、こんな感じでしょうか?

 例)
  シート上のセルA1とB1が空白かどうかをチェックしてそれぞれの状態に合わせて処理を行う。

というものです。
とりあえずVBEでユーザーフォームをひとつ作って、それにコマンドボタンをひとつ貼り付けます。
あとはコードの記述して終わりです。
コードは下に書きましたので、参考にして下さい。

セルA1とB1が共に空白の場合             A1に1を入力
セルA1が空白で、B1は空白でない場合       A1もB1も空白に
セルA1もB1も空白でない場合             A1は空白、B1は1を入力
セルA1は空白でなく、B1が空白の場合        A1もB1も1を入力

Private Sub
CommandButton1_Click()
  If Range("A1") = "" Then
    If Range("B1") = "" Then
      MsgBox "処理1"
      Range("A1") = 1
      Range("B1") = ""


    Else
      MsgBox "処理2"
      Range("A1") = ""
      Range("B1") = ""

    End If

  Else
    If Range("B1") = 1 Then
      MsgBox "処理3"
      Range("A1") = "" '
      Range("B1") = 1


    Else
      MsgBox "処理4"
      Range("A1") = 1
      Range("B1") = 1

    End If
  End If
End Sub


 入れ子はIf構文の中に、またIf構文、そしてまたIf構文といくつでも入れ子をしていくことが出来ます。入れ子が複数になるとどのIfに対してのEnd Ifか分からなくなったりしますので、Tabキーを使って階層が分かるようにしたり工夫も必要になります。
 コード記述は、後からでも理解できるように書くことがポイントです。
コメントを入れたりしながら、工夫して書いてきましょうね。

[トップ][前へ][ステートメント][次へ]