Cómo usar If-Then en Excel 2016 VBA

If-Then es la estructura de control más importante de VBA. Probablemente usará este comando a diario. Utilice la estructura If-Then cuando desee ejecutar una o más declaraciones de forma condicional. La cláusula Else opcional, si se incluye, le permite ejecutar una o más declaraciones si la condición que está probando no es verdadera. Aquí hay un procedimiento CheckUser simple, recodificado para usar la estructura If-Then-Else:

Sub CheckUser2 ()
  UserName = InputBox ("Ingrese su nombre:")
  Si UserName = "Satya Nadella", entonces
    MsgBox ("Bienvenido Satya ...")
'... [Más código aquí] ...
  Demás
    MsgBox “Lo siento. Solo Satya Nadella puede ejecutar esto ".
  Terminara si
End Sub

Ejemplos si-entonces

La siguiente rutina demuestra la estructura If-Then sin la cláusula Else opcional:

Sub GreetMe ()
  Si el tiempo <0.5, entonces MsgBox "Buenos días"
End Sub

El procedimiento GreetMe usa la función Time de VBA para obtener la hora del sistema. Si la hora actual es inferior a 0,5, la rutina muestra un saludo amistoso. Si el tiempo es mayor o igual a 0,5, la rutina finaliza y no ocurre nada.

Para mostrar un saludo diferente si el tiempo es mayor o igual a .5, puede agregar otra instrucción If-Then después de la primera:

Sub GreetMe2 ()
  Si el tiempo <0.5, entonces MsgBox "Buenos días"
  Si Time> = 0.5, entonces MsgBox "Buenas tardes"
End Sub

Observe que> = (mayor o igual que) se usa para la segunda instrucción If-Then. Esto asegura que todo el día esté cubierto. Si se hubiera utilizado> (mayor que), no aparecería ningún mensaje si este procedimiento se ejecutara precisamente a las 12:00 del mediodía. Eso es bastante improbable, pero con un programa importante como este, no querrá correr riesgos.

Un ejemplo de If-Then-Else

Otro enfoque del problema anterior utiliza la cláusula Else. Aquí está la misma rutina recodificada para usar la estructura If-Then-Else:

Sub GreetMe3 ()
  Si el tiempo <0.5, entonces MsgBox "Buenos días" Else _
    MsgBox "Buenas tardes"
End Sub

Observe que el carácter de continuación de línea (guión bajo) se usa en el ejemplo anterior. La declaración If-Then-Else es en realidad una declaración única. VBA proporciona una forma ligeramente diferente de codificar construcciones If-Then-Else que usan una instrucción End If. Por lo tanto, el procedimiento de GreetMe se puede reescribir como

Sub GreetMe4 ()
  Si el tiempo <0.5 entonces
    MsgBox "Buenos días"
  Demás
    MsgBox "Buenas tardes"
  Terminara si
End Sub

De hecho, puede insertar cualquier número de declaraciones en la parte If y cualquier número de declaraciones en la parte Else. Esta sintaxis es más fácil de leer y hace que las declaraciones sean más cortas.

¿Qué sucede si necesita expandir la rutina GreetMe para manejar tres condiciones: mañana, tarde y noche? Tiene dos opciones: usar tres declaraciones If-Then o usar una estructura If-Then-Else anidada . Anidar significa colocar una estructura If-Then-Else dentro de otra estructura If-Then-Else. El primer enfoque, que utiliza tres declaraciones If-Then, es más simple:

Sub GreetMe5 ()
 Dim Msg como cadena
 Si el tiempo <0,5, entonces Msg = "Mañana"
 Si la hora> = 0,5 y la hora <0,75, entonces Msj = "Tarde"
 Si Hora> = 0,75, entonces Msj = "Tarde"
 MsgBox "Bueno" y Msg
End Sub

Se agregó un nuevo giro con el uso de una variable. La variable Msg obtiene un valor de texto diferente, según la hora del día. La declaración MsgBox muestra el saludo: Buenos días, Buenas tardes o Buenas noches.

La siguiente rutina realiza la misma acción pero usa una estructura If-Then-End If:

Sub GreetMe6 ()
  Dim Msg como cadena
  Si el tiempo <0.5 entonces
    Msg = "Mañana"
  Terminara si
  Si el tiempo> = 0,5 y el tiempo <0,75, entonces
    Msg = "Tarde"
  Terminara si
  Si el tiempo> = 0,75 entonces
    Msg = "Tarde"
  Terminara si
  MsgBox "Bueno" y Msg
End Sub

Usando ElseIf

En los ejemplos anteriores, se ejecuta cada declaración de la rutina. Una estructura un poco más eficiente saldría de la rutina tan pronto como se determinara que una condición es verdadera. Por la mañana, por ejemplo, el procedimiento debe mostrar el mensaje Buenos días y luego salir, sin evaluar las otras condiciones superfluas.

Con una pequeña rutina como esta, no tiene que preocuparse por la velocidad de ejecución. Pero para aplicaciones más grandes en las que la velocidad es crítica, debe conocer otra sintaxis para la estructura If-Then.

Así es como puede reescribir la rutina GreetMe usando esta sintaxis:

Sub GreetMe7 ()
 Dim Msg como cadena
 Si el tiempo <0.5 entonces
   Msg = "Mañana"
 ElseIf Time> = 0.5 And Time <0.75 Entonces
   Msg = "Tarde"
 Demás
   Msg = "Tarde"
 Terminara si
 MsgBox "Bueno" y Msg
End Sub

Cuando una condición es verdadera, VBA ejecuta las declaraciones condicionales y la estructura If finaliza. En otras palabras, este procedimiento es un poco más eficiente que los ejemplos anteriores. La compensación es que el código es más difícil de entender.

Otro ejemplo si-entonces

Aquí hay otro ejemplo que usa la forma simple de la estructura If-Then. Este procedimiento solicita al usuario una cantidad y luego muestra el descuento correspondiente, según la cantidad que ingresa el usuario:

Sub ShowDiscount ()
  Dim Cantidad tan larga
  Descuento tenue como doble
  Cantidad = InputBox ("Ingresar cantidad:")
  Si Cantidad> 0 Entonces Descuento = 0.1
  Si Cantidad> = 25 Entonces Descuento = 0.15
  Si Cantidad> = 50 Entonces Descuento = 0.2
  Si Cantidad> = 75 Entonces Descuento = 0.25
  MsgBox "Descuento:" & Descuento
End Sub

Observe que cada instrucción If-Then de esta rutina se ejecuta y el valor de Discount puede cambiar a medida que se ejecutan las instrucciones. Sin embargo, la rutina finalmente muestra el valor correcto de Descuento porque las declaraciones Si-Entonces están en orden de valores de Descuento ascendentes.

El siguiente procedimiento realiza las mismas tareas utilizando la sintaxis alternativa ElseIf. En este caso, la rutina finaliza inmediatamente después de ejecutar las declaraciones para una condición verdadera:

Sub ShowDiscount2 ()
 Dim Cantidad tan larga
 Descuento tenue como doble
 Cantidad = InputBox ("Ingresar cantidad:")
 Si Cantidad> 0 y Cantidad <25, entonces
  Descuento = 0.1
 De lo contrario, si la cantidad> = 25 y la cantidad <50, entonces
  Descuento = 0,15
 De lo contrario, si la cantidad> = 50 y la cantidad <75, entonces
  Descuento = 0,2
 De lo contrario, si la cantidad> = 75 entonces
  Descuento = 0,25
 Terminara si
 MsgBox "Descuento:" & Descuento
End Sub

Estas múltiples estructuras If-Then son bastante engorrosas. Es posible que desee utilizar la estructura If-Then solo para decisiones binarias simples.


Cómo programar una reunión de Skype

Cómo programar una reunión de Skype

Aprenda a programar reuniones efectivas en Skype Empresarial desde Outlook o la aplicación de Skype. Siga nuestros sencillos pasos para una mejor colaboración.

Cómo usar Pegado especial en Excel 2016

Cómo usar Pegado especial en Excel 2016

Aprende a usar la función de Pegado Especial en Excel 2016 para optimizar la forma en que insertas datos en tus hojas de cálculo. Controla qué información se pega y realiza operaciones matemáticas simples con facilidad.

Funciones de Excel para trabajar con números hexadecimales, octales, decimales y binarios

Funciones de Excel para trabajar con números hexadecimales, octales, decimales y binarios

Descubre las funciones de Excel para convertir entre binario, octal, decimal y hexadecimal con esta tabla informativa y consejos útiles para optimizar tu trabajo.

Instalar y activar un complemento de Power Query de Excel

Instalar y activar un complemento de Power Query de Excel

Completa guía sobre cómo instalar y activar el complemento de Power Query en Excel 2010 y 2013, y su uso en Excel 2016. Aprende a gestionar datos de manera efectiva en Excel.

Access 2019: Cómo editar y modificar una base de datos de Access

Access 2019: Cómo editar y modificar una base de datos de Access

Aprende a modificar y editar bases de datos en Access 2019, incluyendo cómo nombrar campos, agregar y eliminar campos, y definir tipos de datos. ¡Optimiza tu trabajo con Access!

Cómo usar el comando Ir a en Word 2016

Cómo usar el comando Ir a en Word 2016

El comando Ir a en Word 2016 es una herramienta poderosa para navegar rápidamente a una página específica o a elementos dentro del documento. Aprende a optimizar tu flujo de trabajo con este práctico comando.

Cómo resaltar fechas de fin de semana en Excel

Cómo resaltar fechas de fin de semana en Excel

Aprende cómo resaltar fechas de fin de semana en Excel utilizando formato condicional para mejorar la gestión de tus datos de programación.

Cómo insertar un enlace para enviar un correo electrónico en una hoja de cálculo de Excel 2010

Cómo insertar un enlace para enviar un correo electrónico en una hoja de cálculo de Excel 2010

Aprenda a insertar un hipervínculo "mailto" en Excel 2010 para crear correos electrónicos de manera simple y eficiente.

Cómo usar las opciones de pegado y Pegado especial en Word 2007

Cómo usar las opciones de pegado y Pegado especial en Word 2007

Aprenda a utilizar las opciones de pegado y Pegado especial en Word 2007 para manejar eficazmente bloques de texto. Optimizando su formato y presentación.

Cómo modificar un gráfico SmartArt en PowerPoint

Cómo modificar un gráfico SmartArt en PowerPoint

Descubre cómo modificar un gráfico SmartArt en PowerPoint incluyendo cambios de diseño, estructura y texto. Mejora tus presentaciones con estos consejos SEO.