Sentencia If…Then…Else…End If

Ejecuta condicionalmente un grupo de sentencias, según el valor de una expresión.

Sintaxis

If condition Then statements [Else elsestatements] . O bien, puede utilizar la sintaxis del formato de bloque:

If condition Then
   [statements]
[ElseIf condition-n Then
   [elseifstatements]] . . .
[Else
   [elsestatements]]
End If

Argumentos:

  • Condition: expresión válida. Expresión numérica o de cadena que se evalúa como True o False. Si la condición es nula, esta se trata como False.

  • Statements: una o más sentencias separadas por dos puntos; se ejecutan si la condición es True.

  • condition-n: igual que condición.

  • Elseifstatements: se ejecutan una o más sentencias si el elemento condition-n asociado es True.

  • Elsestatements: se ejecutan una o más sentencias si ninguna expresión condition o condition-n anterior es True.

Observaciones

Puede utilizar el formato de una sola línea (primera sintaxis) para realizar pruebas cortas y sencillas. Sin embargo, el formato de bloque (segunda sintaxis) proporciona más estructura y flexibilidad que el formato de una sola línea y, por lo general, es más fácil de leer, mantener y depurar. Por lo tanto, aunque el formato de una sola línea está soportado, se recomienda utilizar el formato de bloque.

Note:

La sintaxis de una sola línea está soportada, pero no se recomienda su uso.

Con la sintaxis de una sola línea, es posible ejecutar varias sentencias como resultado de una decisión If...Then, pero todas deben estar en la misma línea y separadas por dos puntos, como en la siguiente sentencia:

Dim A,B,C
A=11
If A > 10 Then A = A + 1 : B = B + A : C = C + B

Al ejecutar un bloque If (segunda sintaxis), se prueba la condición. Si la condición es True, se ejecutan las sentencias que siguen a Then. Si la condición es False, cada ElseIf (si existe) se evalúa a su vez. Cuando se encuentra una condición True, se ejecutan las sentencias que siguen al elemento Then asociado. Si ninguna de las sentencias ElseIf es True (o no hay cláusulas ElseIf), se ejecutan las sentencias que siguen a Else. Después de ejecutar las sentencias que siguen a Then o Else, la ejecución continúa con la sentencia que sigue a End If.

Las cláusulas Else y ElseIf son opcionales. Puede tener tantas sentencias ElseIf como desee en un bloque If, pero ninguna puede aparecer después de la cláusula Else. Las sentencias del bloque If se pueden anidar; es decir, se pueden incluir unas dentro de otras.

Lo que sigue a la palabra clave Then se examina para determinar si una sentencia es un bloque If. Si algo que no sea un comentario aparece después de Then en la misma línea, la sentencia se trata como una sentencia If de una sola línea.

Una sentencia de bloque If debe ser la primera sentencia de una línea. El bloque If debe terminar con una sentencia End If.

Ejemplo: sentencias condicionales

Sentencia If: se ejecuta una sola sentencia cuando una condición es verdadera.

Dim i, strVal
i=10
If i=10 Then strVal = "Hello"

Para ejecutar más de una sentencia cuando la condición If es verdadera, debe poner cada sentencia en líneas separadas y terminar la sentencia con la palabra clave "End If":

Dim i, strVal
i=10
If i=10 Then
    If i=10 Then strVal = "Hello"
    i = i+1
End If

Sentencia If...Then...Else: se selecciona uno de los dos conjuntos de líneas para su ejecución.

Se ejecuta una sentencia si una condición es verdadera y se ejecuta otra sentencia Else si la condición no es verdadera; debe agregar la palabra clave "Else".

Dim i 
Dim strVal
i=5
If i=10 Then
    If i=10 Then strVal = "Hello"
    i = i+1
Else
    i= i+2
    strVal = "world"
End If

Sentencia If...Then...ElseIf …Else: se selecciona uno de los muchos conjuntos de líneas para su ejecución.

Se ejecuta una sentencia si una condición es verdadera y se ejecuta otra sentencia si la primera condición no es verdadera y otra condición sí lo es. Debe agregar la palabra clave ElseIf para todas las condiciones adicionales seguidas de Else al final:

Dim i
Dim strVal
i=14
If i=10 Then
    If i=10 Then strVal = "Hello"
    i = i+1
Elseif i=11 Then
    i= i+2
    strVal = "world"
Else
    i= i+3
    strVal = "world"
End If