If...Then...Else ステートメント (Visual Basic)
更新 : 2010 年 12 月
条件式の値を評価し、条件に応じて適切なステートメントを実行します。
' Multiple-line syntax:
If condition [ Then ]
[ statements ]
[ ElseIf elseifcondition [ Then ]
[ elseifstatements ] ]
[ Else
[ elsestatements ] ]
End If
' Single-line syntax:
If condition Then [ statements ] [ Else [ elsestatements ] ]
指定項目
condition
必ず指定します。 式を指定します。 式の結果は、True または False、あるいは暗黙的に Boolean に変換可能なデータ型である必要があります。Then
単一行の構文の場合は必ず指定します。複数行の構文の場合は省略可能です。statements
省略可能です。 condition が真 (True) の場合に実行されるステートメントを、If...Then の後ろに続けて指定します。elseifcondition
ElseIf が定義されている場合は必ず指定します。 式を指定します。 式の結果は、True または False、あるいは暗黙的に Boolean に変換可能なデータ型である必要があります。elseifstatements
省略可能です。 elseifcondition が真 (True) の場合に実行されるステートメントを、ElseIf...Then の後ろに続けて指定します。elsestatements
省略可能です。 それ以前の condition や elseifcondition の式がどれも真 (True) でない場合に実行される一連のステートメントを指定します。End If
If...Then...Else ブロックを終了します。
解説
複数行の構文
If...Then...Else ステートメントに到達すると、condition がテストされます。 condition が真 (True) の場合、Then の次のステートメントが実行されます。 condition が偽 (False) の場合は、各 ElseIf ステートメント (ある場合) が順に評価されます。 真 (True) に評価される elseifcondition が見つかると、その ElseIf の直後に指定されたステートメントが実行されます。 どの elseifcondition も True にならないか、ElseIf ステートメントが 1 つも定義されていない場合は、Else の次のステートメントが実行されます。 Then、ElseIf、または Else に続くステートメントの実行が終わると、End If の次のステートメントからプログラムの実行が続けられます。
ElseIf 句と Else 句はどちらも必要に応じて定義します。 また、If...Then...Else ステートメントでは、ElseIf 句はいくつ指定してもかまいません。ただし、ElseIf 句は、Else 句の後ろには指定できません。 If...Then...Else ステートメントは互いに入れ子にすることができます。
複数行の構文の場合は、If ステートメントのみを最初の行に定義する必要があります。 ElseIf、Else、および End If の各ステートメントの前に記述できるのは、行ラベルだけです。 If...Then...Else ブロックの終わりには、End If ステートメントを指定してください。
ヒント
評価する 1 つの式が、さまざまな値になる場合は、Select...Case ステートメント (Visual Basic) の方が適しています。
単一行の構文
単一行の構文は、短く簡単な条件判断を行うときに使用します。 ただし、複数行の構文の方がより構造化された柔軟な記述ができます。また、コードの読みやすさや保守性が向上し、デバッグもしやすくなります。
ステートメントが単一行の If かどうかを判断するために、Then キーワードの後ろに何が続くかが調べられます。 同じ行内の Then キーワードの後ろにコメント以外の記述があると、単一行の If ステートメントと判断されます。 Then がない場合は、必ず複数行の If...Then...Else の先頭です。
単一行の構文の場合は、If...Then で判断した結果として、複数のステートメントを実行できます。 すべてのステートメントを、コロンで区切って同じ行に記述する必要があります。
使用例
次の例は、If...Then...Else ステートメントの複数行の構文の使用方法を示しています。
Dim count As Integer = 0
Dim message As String
If count = 0 Then
message = "There are no items."
ElseIf count = 1 Then
message = "There is 1 item."
Else
message = "There are " & count & " items."
End If
次の例では、入れ子になった If...Then...Else ステートメントを使用しています。
Private Function CheckIfTime() As Boolean
' Determine the current day of week and hour of day.
Dim dayW As DayOfWeek = DateTime.Now.DayOfWeek
Dim hour As Integer = DateTime.Now.Hour
' Return True if Wednesday from 2 to 4 P.M.,
' or if Thursday from noon to 1 P.M.
If dayW = DayOfWeek.Wednesday Then
If hour = 14 Or hour = 15 Then
Return True
Else
Return False
End If
ElseIf dayW = DayOfWeek.Thursday Then
If hour = 12 Then
Return True
Else
Return False
End If
Else
Return False
End If
End Function
次の例は、単一行の構文の使用方法を示しています。
If A > 10 Then A = A + 1 : B = B + A : C = C + B
参照
処理手順
方法: 1 つ以上の条件に基づいてステートメントを実行する (Visual Basic)
参照
Select...Case ステートメント (Visual Basic)
概念
履歴の変更
日付 |
履歴 |
理由 |
---|---|---|
2010 年 12 月 |
「解説」セクションが再構成されました。 |
情報の拡充 |
2010 年 12 月 |
例が追加されました。 |
カスタマー フィードバック |