Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado
Logo Excel Avanzado

Doble condicional en VBA

| 2 comentarios

Es sabido que la instrucción IF es una de las más básicas dentro de VBA. Es usada, en esencia, para poder someter a evaluación ciertas situaciones dependiendo de si se cumple o no una condición; y en caso así fuera, realizar una acción posteriormente indicada.

Sin embargo, existe una versión más compleja de esta instrucción, ya que como se puede apreciar esta sirve solo para evaluar si se cumple únicamente una condición. Esto nos lleva a la pregunta de ¿qué hacer en caso no sea solo una la condición a evaluar, sino dos?

La respuesta a esta interrogante reside en el uso de una estructura con doble condicional, es decir donde dos condiciones sean sometidas a evaluación y en caso estas se cumplan, proceder a realizar la o las acciones indicadas. En otras palabras: Si se cumple esto y esto; entonces haz esto. 

 

PRIMER CASO: DOBLE IF

El primer caso es en el que se usa un doble IF, o también denominado como IF ANIDADO, es decir un IF dentro de un IF. La estructura básica y aplicable a cualquier situación sería la siguiente:

If (CONDICIÓN1) then

If (CONDICIÓN2) then

Acción a realizar en caso ambas condiciones sean ciertas

End if

End if

Explicación: mediante la anidación de los IF, se está logrando que, al estar una instrucción contenida dentro de la otra, se asegure de que ambas condiciones sean cumplidas y solo de esta forma acabar ejecutando la acción indicada dentro del segundo IF.

 

Aquí se puede ver un ejemplo dentro del entorno de VBA:

 

EJEMPLO 1:

Doble condicional ejemplo1

En este caso se está comprobando que el índice de un listbox (listbox1) sea 0, posteriormente se comprueba que además el índice de un segundo listbox (listbox2) sea también 0; es decir, está comprobando que dentro de un listbox el usuario haya seleccionado las dos opciones y solo si fue así, se procederá a realizar un incremento en la variable cantidadalumnos la cual actúa como una variable acumulativa. Finalmente, el valor de esta variable será mostrado mediante un Message Box.

 

SEGUNDO CASO: IF y AND

El segundo caso es en el que se usa la instrucción IF y como medio para  anexar otra instrucción IF, se usa el conector AND. La estructura es la siguiente:

 

If (CONDICIÓN1) and (CONDICIÓN2) then

Acción a realizar en caso ambas condiciones sean ciertas

End if

 

Explicación: en este caso ambas condiciones son puestas en el código y el conector AND se encarga de ejercer como lazo, haciendo que, en cierta forma ambas condiciones se conviertan en una única condición; en caso se cumpla, se ejecutará la acción indicada debajo.

 

Aquí un ejemplo en el entorno VBA:

 

EJEMPLO 2:

Doble condicional ejemplo2

Como se puede observar, es el mismo caso del ejemplo 1 pero en lugar de anidar los IF se está aprovechando el conector AND a modo de lazo, asegurando de que solo si ambas se cumplen la variable acumulativa cantidadalumnos realizara su función.

Por: Juan José Zegarra Hidalgo

2 comentarios

  1. Hola, y como hago para que me mande un MsgBox cuando no cumpla una condición? y que no la mande cuando si la cumpla?

  2. En hoja de calculo. Pretendo que se ejecute una macro si se dan dos condiciones: A1, A2. Si (y(a1>0;y(a2>0;y(a1<a2)));ejecuta macro;... (estando en tiempo real, recibiendo y actualizando la/s informacion/nes...
    ¿como hacerlo?
    gracias

Deja una respuesta

Los campos requeridos estan marcados con *.