2013-01-17

複雑なIF文

前回、迷う人が多かった箇所を簡略化して示します。
次の二つの例題に関して、xやyの値がどんな時に「いただきます」と表示されるのか、
表示される条件が例1と例2でどのように違うのか考えてみてください。
マクロを書いて実行するときにIfとEnd IFの対応が合ってなくてエラーになって、後からEnd Ifを書き足した時に、間違いの原因となります。

例1

If x > 0 Then
Msgbox ("こんにちは")
If y > 0 Then
Msgbox ("ありがとう")
Else
Msgbox ("こんばんは")
End If
Else
Msgbox ("さようなら")
If y > 0 Then
Msgbox ("おはよう")
Else
Msgbox ("いただきます")
End If
End If

例2:

If x > 0 Then
Msgbox ("こんにちは")
If y > 0 Then
Msgbox ("ありがとう")
Else
Msgbox ("こんばんは")
End If
Else
Msgbox ("さようなら")
End If
If y > 0 Then
Msgbox ("おはよう")
Else
Msgbox ("いただきます")
End If

このままでは、書いた私自身でも理解するのが大変難しいです。
そこで、If~Else~End Ifで囲まれた部分を少し右にずらします。

例1

If x > 0 Then
  Msgbox ("こんにちは")
  If y > 0 Then
    Msgbox ("ありがとう")
  Else
    Msgbox ("こんばんは")
  End If
Else
  Msgbox ("さようなら")
  If y > 0 Then
    Msgbox ("おはよう")
  Else
    Msgbox ("いただきます")
  End If
End If

例2:

If x > 0 Then
  Msgbox ("こんにちは")
  If y > 0 Then
    Msgbox ("ありがとう")
  Else
    Msgbox ("こんばんは")
  End If
Else
  Msgbox ("さようなら")
End If
If y > 0 Then
  Msgbox ("おはよう")
Else
  Msgbox ("いただきます")
End If

IfとEnd IFの対応が合わなくなるのを防ぐには、Ifを書いた時に中身を書く前にElseやEnd Ifを一緒に書いておくのが良いです。

前回の課題を完成させて、出来た人はフォームの作り方を自習してください。

0 件のコメント: