Instrucción If...Then...Else (Visual Basic)

Ejecuta condicionalmente un grupo de instrucciones en función del valor de una expresión.

Sintaxis

' Multiline syntax:
If condition [ Then ]
    [ statements ]
[ ElseIf elseifcondition [ Then ]
    [ elseifstatements ] ]
[ Else
    [ elsestatements ] ]
End If

' Single-line syntax:
If condition Then [ statements ] [ Else [ elsestatements ] ]

En este artículo se incluyen varios ejemplos que ilustran los usos de la instrucción If...Then...Else:

Partes

condition
Necesario. Expresión. Debe evaluarse como True o False, o en un tipo de datos que se pueda convertir implícitamente a Boolean.

Si la expresión es una variable Boolean que admite un valor NULL y se evalúa como Nothing, la condición se trata como si la expresión fuera False y los bloques de ElseIf se evalúan si existen, o el bloque de Else se ejecuta si existe.

Then
Obligatorio en la sintaxis de una sola línea; opcional en la sintaxis multilínea.

statements
Opcional. Una o varias instrucciones que siguen a If...Then y se ejecutan si condition se evalúa como True.

elseifcondition
Obligatorio si ElseIf está presente. Expresión. Debe evaluarse como True o False, o en un tipo de datos que se pueda convertir implícitamente a Boolean.

elseifstatements
Opcional. Una o varias instrucciones que siguen a ElseIf...Then y se ejecutan si elseifcondition se evalúa como True.

elsestatements
Opcional. Una o varias instrucciones que se ejecutan si ninguna expresión condition o elseifcondition anterior se evalúa como True.

End If
Finaliza la versión multilínea del bloque If...Then...Else.

Comentarios

Sintaxis multilínea

Cuando se encuentra una instrucción If...Then...Else, se prueba condition. Si condition es True, se ejecutan las instrucciones que siguen a Then. Si condition es False, cada instrucción ElseIf (si hay alguna) se evalúa en orden. Cuando se encuentra un elemento True elseifcondition, se ejecutan las instrucciones que siguen inmediatamente al elemento ElseIf asociado. Si ningún elseifcondition se evalúa como True, o si no hay ninguna instrucción ElseIf, se ejecutan las instrucciones que siguen a Else. Después de ejecutar las instrucciones que siguen a Then, ElseIf o Else, la ejecución continúa con la instrucción que sigue a End If.

Las dos cláusulas ElseIf y Else son opcionales. Puede tener tantas cláusulas ElseIf como quiera en una instrucción If...Then...Else, pero ninguna cláusula ElseIf puede aparecer después de una cláusula Else. Las instrucciones If...Then...Else se pueden anidar entre sí.

En la sintaxis multilínea, la instrucción If debe ser la única instrucción de la primera línea. Las instrucciones ElseIf, Else y End If solo pueden ir precedidas por una etiqueta de línea. El bloque If...Then...Else debe terminar con una instrucción End If.

Sugerencia

La instrucción Select...Case puede ser más útil cuando se evalúa una expresión única que tiene varios valores posibles.

Sintaxis de una sola línea

Puede usar la sintaxis de una sola línea para una condición única con código para ejecutarse si es True. Sin embargo, la sintaxis de varias líneas proporciona más estructura y flexibilidad y es más fácil de leer, mantener y depurar.

Lo que sigue a la palabra clave Then se examina para determinar si una instrucción es If de una sola línea. Si aparece algo distinto de un comentario después de Then en la misma línea, la instrucción se trata como una instrucción If de una sola línea. Si Then no está presente, debe ser el inicio de If...Then...Else multilínea.

En la sintaxis de una sola línea, puede ejecutar varias instrucciones como resultado de una decisión If...Then. Todas las instrucciones deben estar en la misma línea y deben aparecer separadas por dos puntos.

Ejemplo de sintaxis multilínea

En el siguiente ejemplo se muestra el uso de la sintaxis multilínea de la instrucción 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.

Ejemplo de sintaxis anidada

El ejemplo siguiente contiene instrucciones If...Then...Else anidadas.

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.

Ejemplo de sintaxis de una sola línea

En el siguiente ejemplo se muestra el uso de la sintaxis de una sola línea.

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

Consulte también