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

Ejecuta de forma condicional un grupo de instrucciones, dependiendo del valor de una expresión.

' Multiple-line syntax:
If condition [ Then ]
    [ statements ]
[ ElseIf elseifcondition [ Then ]
    [ elseifstatements ] ]
[ Else
    [ elsestatements ] ]
End If

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

Partes

  • condition
    Obligatorio. Expresión. Debe evaluarse en True o False, o en un tipo de datos que sea implícitamente convertible a Boolean.

  • Then
    Obligatorio en la sintaxis de una línea, opcional en la sintaxis de varias líneas.

  • statements
    Opcional. Se ejecutan una o más instrucciones que siguen a If...Then que se ejecutan si condition se evalúa como True.

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

  • elseifstatements
    Opcional. Se ejecutan una o más instrucciones que siguen a ElseIf...Then que se ejecutan si elseifcondition se evalúa como True.

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

  • End If
    Termina el bloque If...Then...Else.

Comentarios

Sintaxis de varias líneas

Cuando se encuentra una instrucción If...Then...Else, se prueba condition. Si condition es True, se ejecutan las instrucciones que están a continuación de Then. Si condition es False, cada instrucción ElseIf (si hay alguna) se evalúa en orden. Cuando se encuentra una elseifcondition que sea True, se ejecutan las instrucciones que siguen inmediatamente a la instrucción ElseIf asociada. Si elseifcondition se evalúa como True, o si no hay ninguna instrucción ElseIf, se ejecutan las instrucciones situadas después de Else. Después de la ejecución de las instrucciones que siguen a Then, ElseIf o Else, la ejecución continúa con la instrucción que sigue a End If.

Las cláusulas ElseIf y Else son opcionales. Puede tener tantas cláusulas ElseIf como desee en una instrucción If...Then...Else, pero no puede aparecer ninguna cláusula ElseIf después de una cláusula Else. If...Then...Else las instrucciones se pueden anidar una dentro de otra.

Con la sintaxis de varias líneas, la instrucción If debe ser la única instrucción incluida en la primera línea. Las instrucciones ElseIf, Else y End If pueden ir precedidas solamente por una etiqueta de línea. El bloque If...Then...Else debe terminar con una instrucción End If.

SugerenciaSugerencia

La Instrucción Select...Case (Visual Basic) puede ser más útil al evaluar una única expresión que tiene varios valores posibles.

Sintaxis de una única línea

Puede utilizar la sintaxis de una sola línea para pruebas cortas y sencillas. Sin embargo, la sintaxis de varias líneas proporciona más estructura y flexibilidad y, generalmente, es más fácil de leer, mantener y depurar.

Lo que sigue a la palabra clave Then se examina para determinar si una declaración es un If de una sola línea. Si aparece cualquier otra cosa que no sea un comentario después de Then en la misma línea, ésta se trata como una instrucción If de una sola línea. Si no está presente Then, debe ser el comienzo de una instrucción If...Then...Else de varias líneas.

En la sintaxis de una línea, puede que se ejecuten varias instrucciones como resultado de una decisión If...Then. Todas las instrucciones deben estar en la misma línea y separarse con dos puntos.

Ejemplo

En el ejemplo siguiente se muestra el uso de la sintaxis de varias líneas de la instrucción 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

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

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

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

If A > 10 Then A = A + 1 : B = B + A : C = C + B

Vea también

Tareas

Cómo: Ejecutar instrucciones en función de una o varias condiciones (Visual Basic)

Referencia

#If...Then...#Else (Directivas)

Choose

Instrucción Select...Case (Visual Basic)

Switch

Conceptos

Estructuras de control anidadas (Visual Basic)

Estructuras de decisión (Visual Basic)

Operadores lógicos y bit a bit en Visual Basic

Historial de cambios

Fecha

Historial

Motivo

Diciembre de 2010

Reorganizada la sección Comentarios.

Mejora de la información.

Diciembre de 2010

Se ha agregado un ejemplo.

Comentarios de los clientes.