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 に評価される Boolean の 変数の場合、条件は、式が False であるかのように処理され、ElseIf ブロックが存在する場合は評価されます。存在しない場合は、Else ブロックが実行されます (存在する場合)。

Then
単一行の構文では必須です。複数行の構文では省略可能です。

statements
任意。 If が Then に評価された場合に実行される condition...True の後に続く 1 つ以上のステートメント。

elseifcondition
ElseIf が存在する場合は必須です。 式。 True または False、または Boolean に暗黙的に変換できるデータ型に評価される必要があります。

elseifstatements
任意。 ElseIf が Then に評価された場合に実行される elseifcondition...True の後に続く 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 の直後にあるステートメントが実行されます。 elseifcondition に評価される True がない場合、または ElseIf ステートメントが存在しない場合は、Else に続くステートメントが実行されます。 Then、ElseIf、または Else の後に続くステートメントが実行されると、End If に続くステートメントが引き続き実行されます。

ElseIf と Else の句は省略可能です。 ElseIf...If...Then ステートメントには、必要な数の Else 句を指定できますが、ElseIf 句の後に Else 句を指定することはできません。 If...Then...Else ステートメントは、入れ子にすることができます。

複数行の構文では、If ステートメントが 1 行目の唯一のステートメントである必要があります。 ElseIf、Else、および End If ステートメントの前には、行ラベルのみを付けることができます。 If...Then...Else ブロックは、End If ステートメントで終了する必要があります。

ヒント

Select...Case ステートメントは、複数の値が結果として得られる可能性がある単一の式を評価する場合に便利です。

単一行の構文

単一行の構文は、単一の条件の場合に使用することができ、True の場合に実行するコードを指定します。 ただし、複数行の構文では、より多くの構造と柔軟性が提供され、読み取り、保守、デバッグが簡単になります。

ステートメントが単一行の Then であるかどうかを判別するために、If キーワードの後に続くものが検査されます。 同じ行の 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

関連項目