VBA – Operadores Lógicos – OR, AND, XOR, NOT, IS e LIKE
In this Article
O VBA permite que você use os operadores lógicos And, Or, Not e Xor para comparar valores. Os operadores são considerados “booleanos”, o que significa que eles retornam True (Verdadeiro) ou False (Falso) como resultado.
Se você quiser saber como comparar cadeias de caracteres, clique aqui: VBA Compare Strings – StrComp
Se você quiser aprender a usar operadores de comparação, clique aqui: Operadores de comparação do VBA – Not Equal to e outros
Uso do operador lógico And
O operador lógico And compara duas ou mais condições. Se todas as condições forem verdadeiras, o operador retornará Verdadeiro. Se pelo menos uma das condições não for verdadeira, o operador retornará Falso. Veja a seguir um exemplo
Dim intA As Integer
Dim intB As Integer
Dim blnResultado As Boolean
intA = 5
intB = 5
If intA = 5 And intB = 5 Then
blnResultado = True
Else
blnResultado = False
End If
Neste exemplo, queremos verificar se intA e intB são iguais a 5. Se isso for verdade, o valor do booleano blnResultado será Verdadeiro, caso contrário, será Falso.
Primeiro, definimos os valores de intA e intB como 5:
intA = 5
intB = 5
Depois disso, usamos o operador And na instrução If para verificar se os valores são iguais a 5:
If intA = 5 And intB = 5 Then
blnResultado = True
Else
blnResultado = False
End If
Como ambas as variáveis são iguais a 5, o blnResultado retorna Verdadeiro:
Imagem 1. Uso do operador lógico And no VBA
Uso do Operador Lógico Or
O operador lógico Or compara duas ou mais condições. Se pelo menos uma das condições for verdadeira, ele retornará Verdadeiro. Se nenhuma das condições for verdadeira, o operador retornará Falso. Aqui está o código do exemplo:
Dim intA As Integer
Dim intB As Integer
Dim blnResultado As Boolean
intA = 5
intB = 10
If intA = 5 Or intB = 5 Then
blnResultado = True
Else
blnResultado = False
End If
Neste exemplo, queremos verificar se intA é igual a 5 ou se intB é igual a 10. Se qualquer uma dessas condições for verdadeira, o valor do booleano blnResultado será Verdadeiro; caso contrário, será Falso.
Primeiro, definimos o valor de intA como 5 e intB como 10:
intA = 5
intB = 10
Depois disso, usamos o operador Or na instrução If para verificar se algum dos valores é igual a 5:
If intA = 5 Or intB = 5 Then
blnResultado = True
Else
blnResultado = False
End If
Como o valor de intA é 5, o blnResultado retorna Verdadeiro:
Imagem 2. Uso do operador lógico Or no VBA
Uso do Operador Lógico Not
O operador lógico Not verifica uma ou mais condições. Se as condições forem verdadeiras, o operador retornará Falso. Caso contrário, ele retornará Verdadeiro. Aqui está o código do exemplo:
Dim intA As Integer
Dim blnResultado As Boolean
intA = 5
If Not (intA = 6) Then
blnResultado = True
Else
blnResultado = False
End If
Neste exemplo, queremos verificar se o valor de intA não é igual a 6. Se intA for diferente de 6, o valor do booleano blnResultado será Verdadeiro; caso contrário, será Falso.
Primeiro, definimos o valor de intA como 5:
intA = 5
Depois disso, usamos o operador Not na instrução If para verificar se o valor de intA é diferente de 6:
If Not (intA = 6) Then
blnResultado = True
Else
blnResultado = False
End If
Como o valor de intA é 5, o blnResultado retorna Verdadeiro
Imagem 3. Uso do operador lógico Not no VBA
Uso do operador lógico Xor
O operador lógico Xor compara duas ou mais condições. Se exatamente uma das condições for verdadeira, ele retornará Verdadeiro. Se nenhuma das condições for verdadeira, ou se mais de uma for verdadeira, ele retornará Falso. Aqui está o código do exemplo:
Dim intA As Integer
Dim intB As Integer
Dim blnResultado As Boolean
intA = 5
intB = 10
If intA = 5 Xor intB = 5 Then
blnResultado = True
Else
blnResultado = False
End If
Neste exemplo, queremos verificar se exatamente um dos valores (intA ou IntB) é igual a 5. Se apenas uma condição for verdadeira, o valor do booleano blnResultado será Verdadeiro, caso contrário, será Falso.
Primeiro, definimos o valor de intA como 5 e intB como 10:
intA = 5
intB = 10
Depois disso, usamos o operador Xor na instrução If para verificar se algum dos valores é igual a 5:
If intA = 5 Xor intB = 5 Then
blnResultado = True
Else
blnResultado = False
End If
Como o valor de intA é 5 e o de intB é 10, o blnResultado retorna Verdadeiro.
Imagem 4. Uso do operador lógico Xor no VBA
Operador Is
O operador Is testa se duas variáveis de objeto armazenam o mesmo objeto.
Vamos dar uma olhada em um exemplo. Aqui, atribuiremos duas planilhas aos objetos de planilha rng1 e rng2, testando se os dois objetos de planilha armazenam a mesma planilha:
Sub CompararObjetos()
Dim ws1 As Worksheet, ws2 As Worksheet
Set ws1 = Sheets("Planilha1")
Set ws2 = Sheets("Planilha2")
If ws1 Is ws2 Then
MsgBox "Mesma Planilha"
Else
MsgBox "Planilhas Diferentes"
End If
End Sub
É claro que os objetos de planilha não são os mesmos, portanto, “Planilhas Diferentes” é retornado.
Operador Like
O operador Like pode comparar duas cadeias de caracteres para obter correspondências inexatas. Este exemplo testará se uma cadeia de caracteres começa com “Sr.”
Sub Exemplo_Like()
Dim strNome As String
Dim blnResultado As Boolean
strNome = "Sr. Michael James"
If strNome Like "Sr*" Then
blnResultado = True
Else
blnResultado = False
End If
End Sub