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.


Hoja inteligente 9.1.1

Hoja inteligente 9.1.1

Smartsheet es una plataforma de trabajo dinámica que le permite gestionar proyectos, crear flujos de trabajo y colaborar con su equipo.

Compartirpunto

Compartirpunto

SharePoint es un sistema de colaboración basado en web que utiliza una variedad de aplicaciones de flujo de trabajo, bases de datos de "listas" y otros componentes web, así como funciones de seguridad para dar control a los grupos empresariales que trabajan juntos.

Calendario perpetuo 1.0.38/1.0.36

Calendario perpetuo 1.0.38/1.0.36

Van Nien Calendar es una aplicación de visualización de calendario en su teléfono, que le ayuda a ver rápidamente la fecha lunisolar en su teléfono, organizando así su importante trabajo.

Outlook 2021

Outlook 2021

Microsoft Outlook es una aplicación empresarial y de productividad desarrollada por Microsoft Corporation.

Haga clic arriba

Haga clic arriba

ClickUp es una de las plataformas de productividad mejor calificadas para cualquier empresa. Grandes empresas como Google, Booking.com, San Diego Padres y Uber utilizan ClickUp para aumentar la productividad en el lugar de trabajo.

Visor de PDF-XChange 2.5.322.10

Visor de PDF-XChange 2.5.322.10

PDF se ha convertido en un formato de uso común para leer, crear y enviar documentos de texto. A su vez, se ha producido un aumento en el número de programas utilizados para este tipo de documentación. PDF-XChange Viewer se encuentra entre un número creciente de visores de PDF.

Apache OpenOffice

Apache OpenOffice

Apache OpenOffice ofrece un conjunto completo de aplicaciones de Office que rivalizan con Microsoft 365, especialmente en Excel, PowerPoint y Word. Le permite gestionar sus proyectos de forma más eficaz y admite varios formatos de archivo.

Descargar iTaxviewer 1.8.7

Descargar iTaxviewer 1.8.7

El software iTaxViewer es el software de lectura de archivos XML más popular en la actualidad. Este software es una aplicación de lectura de declaraciones electrónicas de impuestos en formato XML de la Dirección General de Tributación.

Lector de PDF Nitro

Lector de PDF Nitro

Nitro PDF Reader es un práctico editor de PDF que cubre todas las tareas básicas que la mayoría de las personas realizan todos los días con documentos PDF.

Lector Foxit 12

Lector Foxit 12

Foxit Reader es principalmente un lector de PDF y también le permite crear archivos PDF, firmarlos, editarlos y agregar anotaciones. Funciona en sistemas operativos, existen complementos para varios programas del paquete Microsoft Office.