If...Then...Else ステートメント (Visual Basic)
式の値に応じてステートメント グループを条件付きで実行します。
構文
' Multiline syntax:
If condition [ Then ]
[ statements ]
[ ElseIf elseifcondition [ Then ]
[ elseifstatements ] ]
[ Else
[ elsestatements ] ]
End If
' Single-line syntax:
If condition Then [ statements ] [ Else [ elsestatements ] ]
コード例へのクイック リンク
この記事には、If
...Then
...Else
ステートメントの使用方法を示す例がいくつか含まれています。
指定項目
condition
必須です。 式。 True
または False
、または Boolean
に暗黙的に変換できるデータ型に評価される必要があります。
式が Nothing に評価される Nullable の Boolean
変数の場合、条件は、式が False
であるかのように処理され、ElseIf
ブロックが存在する場合は評価されます。存在しない場合は、Else
ブロックが実行されます (存在する場合)。
Then
単一行の構文では必須です。複数行の構文では省略可能です。
statements
任意。 condition
が True
に評価された場合に実行される If
...Then
の後に続く 1 つ以上のステートメント。
elseifcondition
ElseIf
が存在する場合は必須です。 式。 True
または False
、または Boolean
に暗黙的に変換できるデータ型に評価される必要があります。
elseifstatements
任意。 elseifcondition
が True
に評価された場合に実行される ElseIf
...Then
の後に続く 1 つ以上のステートメント。
elsestatements
任意。 前の condition
または elseifcondition
式が True
に評価されなかった場合に実行される 1 つ以上のステートメント。
End If
複数行バージョンの If
...Then
...Else
ブロックを終了します。
Remarks
複数行の構文
If
...Then
...Else
ステートメントが検出されると、condition
がテストされます。 condition
が True
の場合、Then
に続くステートメントが実行されます。 condition
が False
の場合は、各 ElseIf
ステートメント (存在する場合) が順番に評価されます。 True
になる elseifcondition
が見つかると、関連付けられた ElseIf
の直後にあるステートメントが実行されます。 True
に評価される elseifcondition
がない場合、または ElseIf
ステートメントが存在しない場合は、Else
に続くステートメントが実行されます。 Then
、ElseIf
、または Else
の後に続くステートメントが実行されると、End If
に続くステートメントが引き続き実行されます。
ElseIf
と Else
の句は省略可能です。 If
...Then
...Else
ステートメントには、必要な数の ElseIf
句を指定できますが、Else
句の後に ElseIf
句を指定することはできません。 If
...Then
...Else
ステートメントは、入れ子にすることができます。
複数行の構文では、If
ステートメントが 1 行目の唯一のステートメントである必要があります。 ElseIf
、Else
、および End If
ステートメントの前には、行ラベルのみを付けることができます。 If
...Then
...Else
ブロックは、End If
ステートメントで終了する必要があります。
ヒント
Select...Case ステートメントは、複数の値が結果として得られる可能性がある単一の式を評価する場合に便利です。
単一行の構文
単一行の構文は、単一の条件の場合に使用することができ、True の場合に実行するコードを指定します。 ただし、複数行の構文では、より多くの構造と柔軟性が提供され、読み取り、保守、デバッグが簡単になります。
ステートメントが単一行の If
であるかどうかを判別するために、Then
キーワードの後に続くものが検査されます。 同じ行の Then
の後にコメント以外のものがある場合、そのステートメントは単一行の If
ステートメントとして扱われます。 Then
がない場合は、複数行の If
...Then
...Else
が開始されたと見なされます。
単一行の構文では、If
...Then
の判断の結果として複数のステートメントを実行できます。 すべてのステートメントは、同じ行にあり、コロンで区切られている必要があります。
複数行構文の例
次の例では、If
...Then
...Else
ステートメントの複数行構文の使用方法を示します。
'Create a Random object to seed our starting value
Dim randomizer As New Random()
'set our variable
Dim count As Integer = randomizer.Next(0, 5)
Dim message As String
'If count is zero, output will be no items
If count = 0 Then
message = "There are no items."
'If count is 1, output will be "There is 1 item.".
ElseIf count = 1 Then
message = "There is 1 item."
'If count is greater than 1, output will be "There are {count} items.", where {count} is replaced by the value of count.
Else
message = $"There are {count} items."
End If
Console.WriteLine(message)
'This example displays output like the following:
' There are 4 items.
入れ子になった構文の例
次の例には、入れ子になった If
...Then
...Else
ステートメントが含まれています。
Public Sub Main()
' Run the function as part of the WriteLine output.
Console.WriteLine("Time Check is " & CheckIfTime() & ".")
End Sub
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 3:59 P.M.,
' or if Thursday from noon to 12:59 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
'This example displays output like the following:
'Time Check is False.
単一行構文の例
Private Sub SingleLine()
'Create a Random object to seed our starting values
Dim randomizer As New Random()
Dim A As Integer = randomizer.Next(10, 20)
Dim B As Integer = randomizer.Next(0, 20)
Dim C As Integer = randomizer.Next(0, 5)
'Let's display the initial values for comparison
Console.WriteLine($"A value before If: {A}")
Console.WriteLine($"B value before If: {B}")
Console.WriteLine($"C value before If: {C}")
' If A > 10, execute the three colon-separated statements in the order
' that they appear
If A > 10 Then A = A + 1 : B = B + A : C = C + B
'If the condition is true, the values will be different
Console.WriteLine($"A value after If: {A}")
Console.WriteLine($"B value after If: {B}")
Console.WriteLine($"C value after If: {C}")
End Sub
'This example displays output like the following:
'A value before If: 11
'B value before If: 6
'C value before If: 3
'A value after If: 12
'B value after If: 18
'C value after If: 21
関連項目
.NET