Tipo de Datos Booleanos de VBA (Variable Dim)
In this Article
Tipo de Variable Booleana
El tipo de dato Booleano de VBA se utiliza para almacenar valores Verdadero o Falso. Verdadero también puede representarse por 1 y Falso por 0.
Para declarar una variable booleana, se utiliza la sentencia Dim (abreviatura de Dimensión):
Dim blnA as Boolean
A continuación, para asignar un valor a una variable, basta con utilizar el signo igual:
blnA = True
Cuando pones esto en un procedimiento, podría verse así:
Sub blnExample()
'declarar la variable booleana
Dim blnA As Boolean
'ejecute el código para completar la variable; por lo general, el código es una declaración if o case
If Range("A1") > 0 Then
blnA = True
Else
blnA = False
End If
'mostrar el cuadro de mensaje
MsgBox "La prueba para ver si la celda tiene un valor mayor a 0 es " & blnA
End Sub
Si ejecutas el código anterior, se mostrará el siguiente cuadro de mensaje.
Declarar una Variable Booleana a Nivel de Módulo o Global
En el ejemplo anterior, hemos declarado la variable booleana dentro de un procedimiento. Las variables declaradas con un procedimiento sólo pueden utilizarse dentro de ese procedimiento.
En cambio, puedes declarar variables booleanas a nivel de módulo o global.
Nivel de Módulo
Las variables a nivel de módulo se declaran en la parte superior de los módulos de código con la sentencia Dim.
Estas variables pueden ser usadas con cualquier procedimiento en ese módulo de código.
Nivel Global
También puedes declarar variables de nivel Global en la parte superior de los módulos de código. Sin embargo, en lugar de utilizar la sentencia Dim, utilizarás la sentencia Public para indicar que la variable booleana está disponible para ser utilizada en todo tu proyecto VBA.
Public blnA as Boolean
Si declararas la variable booleana a nivel de módulo y luego intentaras utilizarla en un módulo diferente, obtendrías un error.
Sin embargo, si hubieras utilizado la palabra clave Public para declarar la variable booleana , el error no se produciría y el procedimiento se ejecutaría perfectamente.
Utilización de Una Variable Booleana
Las variables Booleanas se utilizan en comparaciones lógicas. A menudo se utiliza con sentencias If para comprobar si una condición es Verdadera o Falsa como en el ejemplo anterior, o en una línea de código para aplicar una prueba lógica – quizás para ver si un valor es mayor que otro.
Sub ejemploBooleano()
'declarar la variable booleana
Dim blnA As Boolean
'comprueba si un número es mayor que el siguiente
blnA = 45 > 68
'mostrar el mensaje con el resultado
MsgBox blnA
End Sub
Si ejecuta el código anterior, obtendrá el siguiente cuadro de mensaje.
porque, por supuesto, ¡45 no es mayor que 68!
Uso de Operadores Booleanos
Como las variables booleanas se utilizan en la comparación lógica, podemos utilizar los operadores lógicos AND y OR para comprobar si más de una condición es verdadera o falsa.
Uso del Operador AND
Podemos utilizar la función AND para ver si se cumplen AMBAS condiciones.
Sub ejemploBooleano()
'declarar la variable booleana
Dim blnA As Boolean
'utilizar el operador AND para comprobar si ambas condiciones son verdaderas
blnA = 10 > 13 And 15 > 12
'mostrar el mensaje
MsgBox blnA
End Sub
o podríamos realizar la misma prueba utilizando una sentencia If:
Sub ejemploBooleano()
'declarar la variable booleana
Dim blnA As Boolean
'utilizar el operador AND para comprobar si ambas condiciones son verdaderas
If 10 > 13 And 15 > 12 Then
blnA = True
Else
blnA = False
End If
'mostrar mensaje del resultado
MsgBox blnA
End Sub
Ambos ejemplos anteriores devolverían FALSO debido a que 10 NO es mayor que 13 – y AMBAS condiciones tienen que ser Verdaderas para que el booleano sea Verdadero.
Usando el Operador OR
Podemos utilizar la función OR para ver si se cumple UNA DE las condiciones.
Sub ejemploBooleano()
'declarar la variable booleana
Dim blnA As Boolean
'utilizar el operador OR para comprobar si una de las condiciones es verdadera
blnA = 10 > 13 Or 15 > 12
'Mostrar el Mensaje
MsgBox blnA
End Sub
o podríamos ejecutar la misma prueba usando una sentencia If:
Sub ejemploBooleano()
'declarar la variable booleana
Dim blnA As Boolean
'utilizar el operador OR para comprobar si una de las condiciones es verdadera
If 10 > 13 Or 15 > 12 Then
blnA = True
Else
blnA = False
End If
'Mostrar Mensaje
MsgBox blnA
End Sub
Estos ejemplos devolverían VERDADERO debido al hecho de que 10 NO es mayor que 13 PERO 15 ES mayor que 12 – y SOLO UNA condición tiene que ser Verdadera para que el Booleano sea Verdadero.
Usar sentencias If nos permite usar más operadores lógicos
Uso del Operador NOT
También podemos utilizar el operador NOT con la variable booleana. El operador NOT niega el valor de la condición – así que si una condición es verdadera, el operador NOT devolverá falso.
Sub Encontrar_Diferencias()
'declarar variables de rango
Dim rng1 As Range
Dim rng2 As Range
'activar hoja uno
Worksheets("Hoja1").Activate
'rellenar los rangos
Set rng1 = Range("A3")
Set rng2 = Range("B3")
'utilizar el operador NOT para ver si los valores son iguales o no
If Not rng1.Value = rng2.Value Then
MsgBox "Los valores de las celdas no son iguales"
Else
MsgBox "Los valores de las celdas son iguales"
End If
End Sub
Uso del Operador Lógico Xor
El operador lógico Xor se utiliza para comparar dos o más condiciones. Si una de las condiciones es verdadera, devolverá VERDADERO. Si hay 2 condiciones, y NINGUNA es verdadera o AMBAS son verdaderas, devolverá FALSO.
Sub Ejemplo_bln()
'declarar los números enteros
Dim intA As Integer
Dim intB As Integer
'declarar la variable booleana
Dim blnResult As Boolean
'rellenar las variables
intA = 5
intB = 10
'comprobar si uno es verdadero
If intA = 5 Xor intB = 5 Then
blnResult = True
Else
blnResult = False
End If
MsgBox blnResult
End Sub
En el ejemplo anterior, como UNA de las condiciones es VERDADERA, el cuadro de mensaje devolverá VERDADERO.
Sub Ejemplo_bln()
'declarar los números enteros
Dim intA As Integer
Dim intB As Integer
'declarar la variable booleana
Dim blnResult As Boolean
'rellenar las variables
intA = 5
intB = 5
'comprobar si uno es verdadero
If intA = 5 Xor intB = 5 Then
blnResult = True
Else
blnResult = False
End If
MsgBox blnResult
End Sub
Sin embargo, en el ejemplo anterior, como AMBAS condiciones son verdaderas, el cuadro de mensaje devolverá FALSO.
Sub Ejemplo_bln()
'declarar los enteros
Dim intA As Integer
Dim intB As Integer
'declarar la variable booleana
Dim blnResult As Boolean
'rellenar las variables
intA = 6
intB = 8
'comprueba si una es verdadera
If intA = 5 Xor intB = 5 Then
blnResult = True
Else
blnResult = False
End If
MsgBox blnResult
End Sub
y por último, como ambas condiciones son FALSAS, el cuadro de mensaje también devolverá FALSO.