VBA le permite usar los operadores lógicos Y, O, No, Xor para comparar valores. Los operadores se consideran "booleanos", lo que significa que devuelven Verdadero o Falso como resultado.
Si desea aprender a comparar cadenas, haga clic aquí: VBA Compare Strings - StrComp
Si desea aprender a usar los operadores de comparación, haga clic aquí: Operadores de comparación de VBA: no es igual a y más
Uso del operador lógico And
los Y El operador lógico compara dos o más condiciones. Si todas las condiciones son verdaderas, el operador devolverá True. Si al menos una de las condiciones no es verdadera, el operador devolverá False. Aquí hay un ejemplo:
123456789101112 | Dim intA como enteroDim intB como enteroDim blnResult como booleanointA = 5intB = 5Si intA = 5 E intB = 5 EntoncesblnResult = VerdaderoDemásblnResult = FalsoTerminara si |
En este ejemplo, queremos comprobar si ambos intA y intB son iguales a 5. Si esto es cierto, el valor de Boolean blnResult será Verdadero, de lo contrario, será Falso.
Primero, establecemos valores de intA y intB al 5:
12 | intA = 5intB = 5 |
Después de eso, usamos el Y operador en la instrucción If para comprobar si los valores son iguales a 5:
12345 | Si intA = 5 e intB = 5 entoncesblnResult = VerdaderoDemásblnResult = FalsoTerminara si |
Como ambas variables son iguales a 5, la blnResult devuelve True:
Imagen 1. Usando el operador lógico And en VBA
Uso del operador lógico Or
los O El operador lógico compara dos o más condiciones. Si al menos una de las condiciones es verdadera, devolverá True. Si ninguna de las condiciones es verdadera, el operador devolverá False. Aquí está el código del ejemplo:
123456789101112 | Dim intA como enteroDim intB como enteroDim blnResult como booleanointA = 5intB = 10Si intA = 5 O intB = 5 EntoncesblnResult = VerdaderoDemásblnResult = FalsoTerminara si |
En este ejemplo, queremos comprobar si ambos intA es igual a 5. o intB es igual a 10. Si alguna de estas condiciones es verdadera, el valor de Boolean blnResult será Verdadero, de lo contrario, será Falso.
Primero, establecemos el valor de intA a 5 y intB a 10:
12 | intA = 5intB = 10 |
Después de eso, usamos el O operador en la instrucción If para comprobar si alguno de los valores es igual a 5:
12345 | Si intA = 5 O intB = 5 EntoncesblnResult = VerdaderoDemásblnResult = FalsoTerminara si |
Como intA el valor es 5, el blnResult devuelve True:
Imagen 2. Usando el operador lógico Or en VBA
Uso del operador no lógico
los No El operador lógico comprueba una o más condiciones. Si las condiciones son verdaderas, el operador devuelve False. De lo contrario, devuelve True. Aquí está el código del ejemplo:
12345678910 | Dim intA como enteroDim blnResult como booleanointA = 5Si no (intA = 6) EntoncesblnResult = VerdaderoDemásblnResult = FalsoTerminara si |
En este ejemplo, queremos comprobar si el valor de intA no es igual a 6. Si intA es diferente de 6, el valor de Boolean blnResult será Verdadero, de lo contrario, será Falso.
Primero, establecemos el valor de intA al 5:
1 | intA = 5 |
Después de eso, usamos el operador Not en la instrucción If para verificar si el valor de intA es diferente de 6:
12345 | Si no (intA = 6) EntoncesblnResult = VerdaderoDemásblnResult = FalsoTerminara si |
Como intA el valor es 5, el blnResult devuelve True:
Imagen 3. Usando el operador No lógico en VBA
Uso del operador lógico Xor
los Xor El operador lógico compara dos o más condiciones. Si exactamente una de las condiciones es verdadera, devolverá True. Si ninguna de las condiciones es verdadera o más de una, devolverá False. Aquí está el código del ejemplo:
123456789101112 | Dim intA como enteroDim intB como enteroDim blnResult como booleanointA = 5intB = 10Si intA = 5 Xor intB = 5 EntoncesblnResult = VerdaderoDemásblnResult = FalsoTerminara si |
En este ejemplo, queremos verificar si exactamente uno de los valores (intA o IntB) es igual a 5. Si solo una condición es verdadera, el valor de Boolean blnResult será Verdadero, de lo contrario, será Falso.
Primero, establecemos el valor de intA a 5 y intB a 10:
12 | intA = 5intB = 10 |
Después de eso, usamos el O operador en la instrucción If para comprobar si alguno de los valores es igual a 5:
12345 | Si intA = 5 Xor intB = 5 EntoncesblnResult = VerdaderoDemásblnResult = FalsoTerminara si |
Como intA el valor es 5 y intB es 10, el blnResult devuelve True:
Imagen 4. Usando el operador lógico Xor en VBA
Es operador
El operador Is prueba si dos variables de objeto almacenan el mismo objeto.
Veamos un ejemplo. Aquí asignaremos dos hojas de trabajo a los objetos de la hoja de trabajo rng1 y rng2, probando si los dos objetos de la hoja de trabajo almacenan la misma hoja de trabajo:
12345678910111213 | Sub CompareObjects ()Dim ws1 como hoja de trabajo, ws2 como hoja de trabajoEstablecer ws1 = Hojas ("Hoja1")Establecer ws2 = Hojas ("Hoja2")Si ws1 es ws2 entoncesMsgBox "Mismo WS"DemásMsgBox "Diferentes WS"Terminara siEnd Sub |
Por supuesto, los objetos de la hoja de trabajo no son los mismos, por lo que se devuelve "WS diferente".
Como operador
El operador Like puede comparar dos cadenas de coincidencias inexactas. Este ejemplo probará si una cadena comienza con "Sr."
1234567891011121314 | Sub LikeDemo ()Dim strName como cadenaDim blnResult como booleanostrName = "Sr. Michael James"Si strName como "Mr *", entoncesblnResult = VerdaderoDemásblnResult = FalsoTerminara siEnd Sub |