Introducción
Una de las cosas más comunes en la codificación es construir una lógica que verifique la ocurrencia de múltiples condiciones. Con suerte, estará de acuerdo en que esta es una de las tareas de codificación más comunes, ya sea principiante o experimentado.
En VBA, las declaraciones If se usan a menudo para construir dicha lógica. Por ejemplo, puede crear una lógica que verifique si el clima es bueno hoy.
Si es así, puedes salir de casa. Si no, comprueba si está lloviendo un poco o si es una ventisca. Si llueve un poco y tienes tu chubasquero listo, puedes irte. Este es un escenario simple, pero se parece a problemas de codificación comunes.
Por lo general, podemos manejar dicha lógica utilizando la declaración IF con múltiples condiciones. Una alternativa que tiene sentido bajo ciertas condiciones es usar la instrucción Select Case. En esta guía nos centraremos en la If Declaración con múltiples condicionespero también cubriremos brevemente los conceptos básicos de la declaración Select Case, así como cuándo usarla.
Sentencia IF de tabla de sintaxis
Descripción | Formato | Ejemplo |
si entonces | Si [condition is true] Después [do something] Terminara si | If Good_Weather = True Then MsgBox “Go Out” End If |
Si sin Fin Si (solo una linea) | Si [condition is true] Después [do something] | If Good_Weather then MsgBox “Go Out” |
Si otro | Si [condition is true] Después [do something] De lo contrario [do something] Terminara si | If Rain_Coat_Ready = True Then MsgBox “Go Out” Else MsgBox “Stay Home” End If |
si elseif | Si [condition 1 is true] Después [do something] OtroSi [condition2 is true] Después [do something] Terminara si | If Good_Weather = True Then Msgbox “Go Out” ElseIf Good_Weather = False AND Rain_Coat_Ready = True Then Msgbox “Go Out” End if |
ElseIf y Else (debe estar en este orden) | Si [condition1 is true] Después [do something] OtroSi [condition 2 is true] Después [do something] Terminara si | If Good_Weather = True Then Msgbox “Go Out” ElseIf Good_Weather = False AND Rain_Coat_Ready = True Then Msgbox “Go Out” Else Msgbox “Stay Home” End if |
Puertas lógicas
X | Y | Y RESULTADO | O RESULTADO |
DONDE | DONDE | Y | DONDE |
DONDE | FALSO | FALSO | DONDE |
FALSO | DONDE | FALSO | DONDE |
FALSO | FALSO | FALSO | FALSO |
Ejemplo 1: ¿Debería salir hoy?
Desarrollaremos la lógica del diagrama anterior paso a paso.
Sub ShouldIGoOutToday() 'Set the weather to good or bad Good_Weather = False 'Set the Rain coat to ready or not Rain_Coat_Ready = True 'Set the type of bad weather Bad_Weather = "Some Rain" If Good_Weather = True Then 'if weather is good then go out MsgBox "Go Out" Else 'if weather is not good If Bad_Weather = "Some Rain" Then 'If the bad weather is some rain If Rain_Coat_Ready = True Then 'If the bad weather is some rain and the rain coat is ready MsgBox "Go Out" Else 'if the bad weather is some reain and the rain coat is not ready MsgBox "Stay Home" End If ElseIf Bad_Weather = "Blizzard" Then 'if the bad weather is blizzard MsgBox " Stay Home" End If End If End Sub
Ejemplo 2: Usando AND/OR
Puede especificar varias condiciones dentro de la misma condición utilizando AND y OR. En lugar de comprobar que condition = True
podemos comprobar eso condition1 = True AND condition2 = True
. Esto se puede aplicar al ejemplo anterior al ver si el mal tiempo es ‘algo de lluvia’ Y el impermeable está listo.
Sub ShouldIGoOutTodayEx2() 'Set the weather to good or bad Good_Weather = False 'Set the Rain coat to ready or not Rain_Coat_Ready = True 'Set the type of bad weather Bad_Weather = "Some Rain" If Good_Weather = True Then 'if weather is good then go out MsgBox "Go Out" Else 'if weather is not good If Bad_Weather = "Some Rain" And Rain_Coat_Ready = True Then 'If the bad weather is some rain AND the rain coat is ready then Go Out MsgBox "Go Out" ElseIf Bad_Weather = "Blizzard" Or Rain_Coat_Ready = False Then 'if the bad weather is blizzard or the rain coat is not ready then Stay Home MsgBox " Stay Home" End If End If End Sub
Para obtener más información sobre el uso de AND y OR con instrucciones If, consulte este artículo:
https://software-solutions-online.com/vba-si-o/
Alternativa a la instrucción If: Select Case
La forma más obvia de seleccionar el caso es hacer algo cuando solo estamos interesados en el valor de una determinada variable y las cosas que hagamos dependerán del valor de esa variable.
En nuestro ejemplo anterior, no hay una sola variable de la que dependamos para determinar el resultado. Intentaremos implementar la lógica anterior usando Seleccione el caso.
La principal diferencia entre el Seleccione el caso y Si declaraciones es que Seleccione el caso le permite ‘hacer algo’ solo en función del valor de la Seleccione el caso variable. Para superar este obstáculo, puede establecer la variable Seleccionar caso en Verdadero. Luego especifica la condición completa detrás de la palabra clave Caso y lo que queremos hacer si se pasa en la siguiente línea.
Por lo tanto, en lugar de esta sintaxis:
If X = 2 and Y = 3 then
[do something]
End if
Con Select Case es esta sintaxis:
Select Case True
Case X = 2 and Y = 3
[do something]
End Select
La implementación completa de los ejemplos anteriores usando Select Case se muestra a continuación:
Sub ShouldIGoOutTodayEx3() 'Set the weather to good or bad Good_Weather = False 'Set the Rain coat to ready or not Rain_Coat_Ready = False 'Set the type of bad weather Bad_Weather = "Some Rain" Select Case True Case Good_Weather = True MsgBox "Go Out" Case Good_Weather = False And Bad_Weather = "Some Rain" And Rain_Coat_Ready = True MsgBox "Go Out" Case Good_Weather = False And Bad_Weather = "Some Rain" And Rain_Coat_Ready = False MsgBox "Stay Home" Case Good_Weather = False And Bad_Weather = "Blizzard" MsgBox "Stay Home" End Select End Sub
Descripción general
Las declaraciones If son ideales para manejar lógica simple y compleja que involucra múltiples condiciones y cosas que queremos que sucedan en consecuencia. Por otro lado, Select Case también se puede usar como una alternativa, pero generalmente está destinado a una situación en la que queremos seleccionar una cosa para hacer entre varias cosas posibles. A medida que la lógica se vuelve más compleja y se agregan más niveles a la lógica, Select Case se vuelve menos intuitivo.
Consulte también: Resolver el error «Finalizar si sin bloquear si»: ¡no encuentre este error!