DECLARACIONES CONDICIONALES

Hasta ahora las macros que hemos codificado, ejecutan una serie de acciones (comandos del Excel) de arriba hacia abajo, incondicionalmente. No nos hemos encontrado con algunas acciones; es decir, si se cumple alguna condición, se ejecuta dicha acción, en caso contrario (si la condición no se cumple) no se ejecuta la acción.

Las sentencias para las acciones o cálculos condicionales son:

- IF ... THEN ..... ELSE ...
- WHILE ... WEND
- DO ..... UNTIL ....

En esta sección describiremos al primera, la sentencia IF

Sentencia IF ... THEN ... ELSE ...

Sintaxis
donde Condic es una una expresión de comparación que puede ser VERDADERA o FALSA.

IF Condi THEN
..... Sentencias que se ejecutan cuando Condic es verdadera
ELSE
< ..... Sentencias que se ejecutan cuando Condic es falsa
END IF

Explicación:

Si la expresión reperesentada por "Condic" es verdadera, se ejecuta la o las instrucciones que vienen después de la cláusula THEN y luego de ejecutarlas, el control pasa a la sentencia que viene después de END IF. Pero si "Condic" resulta falsa, se ejecuta las instrucciones después de la claúsula ELSE, hasta antes de END IF y luego continúa con la que venga.

Ejemplo 1

Supongamos que M = 10
If M < 13 Then
MsgBox("Buenos dias ...")
Else
MsgBox("Buenas tardes")
End If

Pregunta: ¿Qué mensaje se imprime?
Respuesta: Buenos días

Ejemplo 2

Supongamos que N = 10 y J = 4
IF J < N THEN
J = J + 2
ELSE
A = InputBox("Nombre del producto")
END IF

Al ejecutarse la sentencia If, J se incrementa en 2; es decir, continuará después del End If con J = 6

Ejemplo 3

Supongamos que A = 1, B = 2 y C = -24
' Primero nos aseguramos que A sea diferente de 0. Si es cero, termina.

IF A = 0 Then
MsgBoox ("No es una ecuación cuadrática.")
End
End If
'
IF B*B - 4*A*C >= 0 THEN
Raiz1 = (B - SQR(B*B - 4*A*C))/(2*A)
Raiz2 = (B + SQR(B*B - 4*A*C))/(2*A)
ELSE
MsgBox("La ecuación no tiene raíces reales.")
End If

Comentario:

Dada una ecuación cuadráica Ax² +Bx + C = 0, se trata de obtener las raíces de esta ecuación.
Primero comprueba que A sea diferente de 0. Si es 0, termina. En caso contrario, ejecuta el segundo If. Comprueba si la expresión B*B-4AC es mayor o igual a 0. Si es cierto, calcula Raiz1 y Raiz2 y los imprime. Si la expresión es negativa, imprime: La ecación no tiene raíces reales.

A continuación se muestra una imagen conteniendo el procedimiento completo.


Vaya al editor, inserte un nuevo módulo (Módulo4) y copie el procedimiento que se llamará UsoDeIf.

Ejecute el procedimiento presionando F5, con los valores que se han ingresado.

Ahora, cambie los valores a los que Ud desee, vuelva a ejecutar y compruebe manualmente.

Finalmente, digite para A el valor 0 y ejecute el procedimiento.

Grabe el archivo con el mismo nombre.
En la siguiente sesión veremos el uso de If en el cálculo de estadística de notas Para ello haga clic aquí