¿cómo utilizar la declaración if con else en vba?

Si desea ser un usuario avanzado de VBA, una declaración IF es imprescindible. Y creo que ya conoce la palabra SI y la usa con frecuencia como función de hoja de cálculo.

En VBA, IF funciona de la misma manera. Su idea básica es realizar una tarea cuando una condición es VERDADERA; de lo contrario, no hacer nada o hacer otra cosa. Puede escribir tanto de forma sencilla como en condiciones complejas.

Para facilitar la comprensión lo he dividido en tres partes diferentes.

  • Proporcionado para ser probado.
  • Una tarea a realizar si la condición es VERDADERA.
  • Una tarea a realizar si la condición es FALSA.

Así es como se ve en la vida real:

usando el código de declaración IF de VBA en Excel

En el ejemplo anterior, la lluvia es una condición. Si esta condición es VERDADERA, el niño abrirá su paraguas y si la condición es FALSA se pondrá su sombrero. Las condiciones son omnipresentes en nuestra vida diaria. Pero ahora volvamos a nuestro mundo de la codificación y exploremoslo.

Sintaxis: VBA SI

Tenemos tres tipos diferentes de declaraciones IF en VBA.

1. SI-Entonces

SI ENTONCES es la forma más simple de declaración SI. Todo lo que necesitamos hacer es especificar una condición para verificar y, si esa condición es VERDADERA, realizará una tarea. Pero, si esta condición es FALSA, no hará nada y saltará la línea al instante.

Sintaxis

 IF condition Then statement[s]

En la sintaxis anterior, debemos especificar una condición para evaluar y una tarea para realizar si esa condición es VERDADERA.

Ejemplo

vba if declaración usando if entonces código macro

En el ejemplo anterior, hemos comprobado que la celda A1 contiene el valor 10 y, si es así, la declaración mostrará un cuadro de mensaje con el mensaje «La celda A1 tiene el valor 10».

 Sub CheckValue() If Range("A1").Value = 10 Then MsgBox ("Cell A1 has value 10") End Sub

2. SI-entonces-si no

Puede utilizar la instrucción IF-Then-Else cuando desee realizar una tarea específica si una condición es VERDADERA y una tarea diferente si una condición es FALSA.

Sintaxis

 IF Condition Then Statement[s] Else Statement[s] End If

Con la sintaxis anterior, podemos realizar diferentes tareas dependiendo del resultado de una condición. Si la condición es VERDADERA, ejecutará la declaración que mencionó después de «Entonces» o si la condición es FALSA, ejecutará la declaración que mencionó después de «Si no».

Ejemplo

 Sub CheckValue() If Range("A1").Value = "10" Then MsgBox ("Cell A1 has value 10") Else MsgBox ("Cell A1 has a value other than 10") End Sub
vba if declaración usando el código de macro if then else

En el ejemplo anterior, utilicé la instrucción IF-Then-Else para verificar el valor en la celda A1.

Si la celda A1 tiene un valor de 10, aparecerá un cuadro de mensaje que dice «La celda A1 tiene un valor de 10» y si hay otro valor en la celda A1, aparecerá un cuadro de mensaje que dice «La celda A1 tiene un valor distinto de 10». Entonces aquí podemos realizar diferentes tareas según el resultado de la condición.

3. SI-Entonces-Elseif-Else

Este es el tipo de IF más útil e importante que le ayudará a escribir declaraciones de condición avanzadas. En este tipo puede especificar la segunda condición después de evaluar su primera condición.

Sintaxis

 IF Condition Then Statement[s] Elseif Condition Then Statement[s] Else Statement[s] End If

En la sintaxis anterior, tenemos:

  1. En condición de evaluar.
  2. Una instrucción para ejecutar si esta condición es TURE.
  3. Si esta condición es FALSA entonces tenemos la segunda condición para evaluar.
  4. Y, si la segunda condición es VERDADERA, tenemos que hacer una declaración.
  5. Pero, si ambas condiciones, la primera y la segunda, son FALSAS, hará una declaración que usted mencionó después de «Else».

Y la mejor parte es que puedes usar cualquier cantidad de «Elseif» en tu código. Esto significa que puede especificar cualquier número de condiciones en su declaración.

Ejemplo

vba if declaración usando if luego elseif código de macro elseif
 Sub check_grade() If Range("A2").Value = "A" Then MsgBox "Very Good" Else If Range("A2").Value = "B" Then MsgBox "Good" ElseIf Range("A2").Value = "C" Then MsgBox "Average" ElseIf Range("A2").Value = "D" Then MsgBox "Poor" ElseIf Range("A2").Value = "E" Then MsgBox "Very Poor" Else MsgBox "Enter Correct Grade" End Sub

En el ejemplo anterior, hemos escrito una macro que primero verificará la celda A2 para ver el valor «A» y si la celda tiene una calificación de «A», la declaración devolverá el mensaje «Muy bueno».

Esta instrucción primero verificará la celda A2 para ver el valor «A» y si la celda tiene una calificación de «A», la instrucción devolverá el mensaje «Muy bueno».

Y, si la primera condición es FALSA, evaluará la segunda condición y devolverá el mensaje «Buena» si la celda tiene una calificación de «B».

Y, si la segunda condición es falsa, se pasará a la tercera condición, y así sucesivamente. En última instancia, si las cinco condiciones son falsas, ejecutará el código que escribí después del resto.

El secreto para escribir una declaración IF en VBA

Ahora ya conoces todos los tipos de IS y también puedes elegir uno dependiendo de la tarea que necesites realizar. Dejame decirte un secreto.

Declaración IF de una sola línea frente a declaración IF en bloque

Puedes escribir una declaración IF de dos maneras diferentes y ambas tienen ventajas y desventajas. Mira a.

1. Declaración de una línea

La declaración de una línea es perfecta si usa la declaración SI-Entonces. La base para utilizar una declaración de línea es escribir todo el código en una sola línea.

 If A1 = 10 Then Msgbox("Cell A1 has value 10")

En la declaración anterior, hemos escrito una declaración IF para evaluar si la celda A1 tiene un valor de 10, luego mostrará un cuadro de mensaje. La mejor práctica para utilizar una declaración de una línea es cuando necesita escribir código simple. Es difícil de entender el uso de código de una línea para declaraciones largas y complejas.

Consejo rápido: al escribir código de una sola línea, no es necesario utilizar Endif para completar la declaración.

2. Declaración de bloque

Una declaración Block es perfecta cuando deseas escribir tu código de una manera decente y comprensible. Cuando escribe una declaración de bloque, puede usar varias líneas en su macro, lo que le brinda un código limpio y ordenado.

 Sub check_value() If Range(“A1”).Value = “10” Then MsgBox ("Cell A1 has value 10") Else MsgBox ("Cell A1 has a value other than 10") End If End Sub

En el ejemplo anterior, hemos escrito una declaración IF-Then-Else en bloques. Y puede ver que es fácil de leer e incluso fácil de depurar.

Al escribir instrucciones complejas (lo que definitivamente hará después de leer esta guía), las instrucciones en bloque siempre son buenas. Y, mientras escribe declaraciones If anidadas, también puede agregar sangría en su línea para mayor claridad.

Consejo rápido : tiene una excepción que puede ignorar usando Else al final de su código cuando usa IF-Then-Elseif-Else. Esto es muy útil cuando no necesita realizar ninguna tarea cuando ninguna de las condiciones es VERDADERA en su declaración.

8 ejemplos concretos

Aquí he enumerado algunos ejemplos simples pero útiles que puedes seguir.

1. SI anidado

La mejor parte de la declaración IF es que crea declaraciones anidadas. Puede agregar una segunda condición a la primera condición.

escribiendo anidamiento if con vba if declaración
 Sub NestIF() Dim res As Long res = MsgBox("Do you want to save this file?", vbYesNo, "Save File") If res = vbYes Then 'start of first IF statement If ActiveWorkbook.Saved <> True Then 'start of second IF statement. ActiveWorkbook.SaveMsgBox ("Workbook Saved") Else MsgBox "This workbook is already saved" End If 'end of second IF statement Else MsgBox "Make Sure to save it later" End If ' end of first IF statement End Sub

En el ejemplo anterior, utilizamos una declaración IF anidada. Cuando ejecute esta macro , aparecerá un cuadro de mensaje con las opciones Aceptar y Cancelar. Después de eso comienza el trabajo del enunciado condicional.

Primero, evaluará el botón en el que hizo clic. Si hizo clic en «Sí», anídelo para evaluar si su hoja de cálculo se guarda o no.

Si su libro de trabajo no se guarda, lo guardará y recibirá un mensaje. Y, si el libro ya está guardado, mostrará un mensaje al respecto.

Pero si hace clic en el botón, la condición de la primera macro será FALSA y solo recibirá un mensaje para guardar su libro más tarde.

La idea básica en este código es que la segunda condición depende totalmente de la primera condición. Si la primera condición es FALSA, la segunda condición no será evaluada.

Más información sobre IF anidado

2. Crea un bucle con IF y GoTo

También puedes crear un bucle usando goto con IF. La mayoría de los programadores evitan escribir bucles de esta manera porque tenemos mejores formas de hacerlo . Pero no hay nada de malo en aprender cómo podemos hacerlo.

 Sub auto_open() Alert: If InputBox("Enter Username") <> "Puneet" Then GoTo Alert Else MsgBox "Welcome" End If End Sub

En el ejemplo anterior, utilizamos una declaración de condición para crear un bucle. Usamos auto_open como nombre de la macro para que cada vez que alguien abra el archivo, ejecute esta macro.

El usuario debe ingresar un nombre de usuario y si ese nombre de usuario no es igual a «Puneet», repetirá el código y mostrará el cuadro de entrada nuevamente. Y, si ingresa el texto correcto, podrá acceder al archivo.

3. Comprueba si una celda contiene un número.

Aquí hemos utilizado una condición para comprobar si la celda activa contiene un valor numérico o no.

use la declaración vba if para verificar el número en la celda
 Sub check_number() If IsNumeric(Range("B2").Value) Then MsgBox "Yes, active cell has a number." Else MsgBox "No, active cell hasn't a number." End If End Sub

En el ejemplo anterior, escribí una condición usando la función isnumeric en VBA, que es la misma que la función numérica en la hoja de trabajo para verificar si el valor de una celda es un número o no.

Si el valor es un número, devolverá VERDADERO y recibirá el mensaje «Sí, la celda activa tiene un valor numérico». Y, si el valor no es un número, recibirá el mensaje «No hay valor numérico en la celda activa».

4. Utilice OR y AND con IF

Usando IF OR, puede especificar dos o más condiciones y realizar una tarea si al menos una condición es VERDADERA entre todas.

 Sub UsingOR() If Range("A1") < 70 Or Range("B1") < 70 Then MsgBox "You Are Pass" Else If Range("A1") < 40 And Range("B1") < 40 Then MsgBox "You Are Pass" Else MsgBox "You Are Fail" End If End If End Sub

En el ejemplo anterior, en la línea 2, tenemos dos condiciones que usan OR. Si un alumno obtiene 70 puntos en alguna de las materias, el resultado será “Aprobado”. Y en la línea 7 tenemos dos condiciones usando el operador AND. Si un estudiante obtiene más de 40 puntos en ambas materias, el resultado será “Aprobado”.

Usando IF AND puede especificar múltiples condiciones y realizar una tarea si todas las condiciones son VERDADERAS.

5. No utilizar con IF

Al usar NOT en una condición, puede cambiar VERDADERO a FALSO y FALSO a VERDADERO.

VBA SI NO

 Sub IF_Not() If Range(“D1”) <= 40 And Not Range(“E1”) = “E” Then MsgBox "You Are Pass." Else MsgBox "You Are Fail." End If End Sub

En el ejemplo anterior, hemos usado NOT en la condición. Tenemos dos celdas con la puntuación del sujeto. En una celda la puntuación está en números y en otra celda tiene calificaciones.

  • Si un estudiante tiene calificaciones superiores a 40 en la primera materia y superiores a la calificación E en la segunda materia, es un APROBADO.
  • Si un estudiante tiene calificaciones superiores a 40 en la primera materia y superiores a la calificación E en la segunda materia, es APROBADO.

Por lo tanto, cada vez que las calificaciones de un estudiante sean superiores a 40 y una calificación distinta de E, recibiremos un mensaje de «Aprobaste» o «Reprobaste».

6. Declaración IF con una casilla de verificación

Ahora aquí usamos una casilla de verificación para ejecutar una macro.

usando vba if declaración con casilla de verificación
 Sub ship_as_bill() If Range("D15") = True Then Range("D17:D21") = Range("C17:C21") Else If Range(“D15”) = False Then Range("D17:D21").ClearContents Else MsgBox (“Error!”) End If End If End Sub

En el ejemplo anterior, utilizamos una declaración IF para crear una condición según la cual, si la casilla de verificación está marcada, el rango D17:D21 es igual al rango C17:C21. Y, si la casilla no está marcada, el rango D17:D21 estará vacío.

Usando esta técnica podemos usar la dirección de facturación como dirección de envío y si necesitamos algo más podemos ingresar la dirección manualmente.

7. Comprueba si una celda está fusionada.

Y aquí escribimos una condición para recibir una alerta si se fusiona una celda activa.

comprobar si una celda está fusionada usando la declaración vba if
 Sub MergeCellCheck() If ActiveCell.MergeCells Then MsgBox "Active Cell Is Merged" Else MsgBox "Active Cell Is Not Merged" End If End Sub

En el código anterior, hemos utilizado celdas fusionadas para comprobar si la celda activa está fusionada o no. Si la celda activa se fusiona, la condición devolverá una alerta para esto .

8. Elimina toda la fila si una celda está vacía.

Aquí usamos IF para verificar si una fila está vacía o no. Y, si esta línea está vacía, la declaración eliminará esa línea en particular.

 Sub DeleteRow() If Application.CountA(ActiveCell.EntireRow) = 0 Then ActiveCell.EntireRow.Delete Else MsgBox Application.CountA(ActiveCell.EntireRow) & "Cell(s) have values in this row" End If End Sub

En el ejemplo anterior, primero verificará las celdas que tienen un valor. Si el número de celdas con un valor es cero, la condición eliminará la fila activa, de lo contrario devolverá la alerta indicando el número de celdas con un valor.

Conclusión

Como dije, esta es una de las partes más importantes de VBA y debes aprenderla si quieres dominar VBA. Con la declaración IF, puede escribir códigos simples y complejos. También puede utilizar operadores lógicos y escribir condiciones anidadas.

Espero que esta guía te ayude a escribir mejores códigos.

Ahora dime esto. ¿Escribes condiciones con frecuencia en VBA? ¿Qué tipo de códigos escribes? Por favor comparta sus puntos de vista conmigo en la sección de comentarios. Y no olvides compartir esta guía con tus amigos.

Añadir un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *