Comparação VBA Operators: Não é igual, Less que ou igual a
⚡ Resumo Inteligente
Comparação VBA OperaOs operadores comparam um valor com outro e retornam Verdadeiro ou Falso. Esta página define os seis operadores, mostra-os dentro de uma instrução If, explica como textos e datas são comparados e lista os erros que produzem resultados incorretos.

Comparação VBA Operatoros
Esses são operadores usados para comparar valores. Os operadores de comparação incluem igual a, menor que, maior que e diferente de.
Os operadores de comparação são usados para comparar valores para fins de validação. Digamos que você esteja desenvolvendo...ping Um aplicativo simples de ponto de venda. Neste aplicativo, você deseja validar os valores inseridos antes de efetuar a compra. Nesses casos, você pode usar operadores de comparação. Esse operador verifica se há números negativos ou se o valor pago excede o valor faturado. Os operadores de comparação são muito úteis em situações como essa.
Toda comparação retorna um de dois valores, Verdadeiro ou Falso, e nunca um número. É sobre esse resultado que uma instrução If atua.
A tabela a seguir lista os operadores de comparação definidos em VBA.
| Operator | Descrição |
|---|---|
| = | Igual: verifica se dois valores são iguais. Também é usado como um operador de atribuição |
| < | Less than: verifica se o valor à esquerda é menor que o valor à direita. |
| > | Maior que: verifica se o valor à esquerda é maior que o valor à direita. |
| <> | Diferente de: verifica se dois valores são diferentes entre si. |
| <= | Less menor ou igual a: verifica se o valor à esquerda é menor ou igual ao valor à direita. |
| >= | Maior ou igual a: verifica se o valor à esquerda é maior ou igual ao valor à direita. |
Ao ver cada operador aplicado a duas variáveis, o resultado obtido torna-se mais fácil de prever.
Comparação VBA Operators com exemplo
A tabela a seguir mostra a comparação do Excel VBA Operators com exemplos e resultados.
| S / N | Operator | Exemplo | saída |
|---|---|---|---|
| 1 | = | Se x = z Então | Retorna verdadeiro se forem iguais, caso contrário retorna falso |
| 2 | < | Se x < z então | Retorna verdadeiro se x for menor que z, caso contrário, retorna falso |
| 3 | > | Se x > z Então | Retorna verdadeiro se x for maior que z, caso contrário retorna falso |
| 4 | <> | Se x <> z Então | Retorna verdadeiro se não forem iguais, caso contrário retorna falso |
| 5 | <= | Se x <= z Então | Retorna verdadeiro se x for menor ou igual a z, caso contrário, retorna falso |
| 6 | >= | Se x >= z Então | Retorna verdadeiro se x for maior ou igual a z, caso contrário, retorna falso |
Exemplo de código-fonte
Comparação igual Operator
If 2 = 1 Then MsgBox "True", vbOKOnly, "Equal Operator" Else MsgBox "False", vbOKOnly, "Equal Operator" End If
AQUI,
- “Se 2 = 1 então… senão… termine se” usa a instrução if para avaliar a condição “2 = 1”
- “MensagemBox... " É uma função integrada que exibe uma caixa de mensagem.
- O primeiro parâmetro “True” ou “False” é o que será exibido na caixa de mensagem. No nosso exemplo, 2 não é igual a 1, portanto, aparecerá “falso” na caixa de mensagem.
- O segundo parâmetro “vbOKOnly” é o botão que aparece na caixa de mensagem
- O terceiro parâmetro “Igual Operator” é o título da caixa de mensagem.
A execução do código acima fornece os seguintes resultados
Esse teste único é a forma mais simples. Macros reais combinam comparações e ramificam entre vários resultados.
Como usar a comparação Operatores em uma instrução If
Um operador de comparação raramente é útil por si só. Seu resultado Verdadeiro ou Falso é usado como entrada para uma estrutura de decisão, e a instrução SE é a que você mais usará. O exemplo abaixo atribui uma nota a uma pontuação armazenada na célula A1 e escreve o resultado ao lado dela.
Sub GradeScore() Dim Score As Long Score = Sheet1.Range("A1").Value If Score >= 90 Then Sheet1.Range("B1").Value = "Distinction" ElseIf Score >= 50 Then Sheet1.Range("B1").Value = "Pass" ElseIf Score < 0 Then MsgBox "A score cannot be negative", vbCritical, "Invalid Entry" Else Sheet1.Range("B1").Value = "Fail" End If End Sub
A macro lê a pontuação uma vez e, em seguida, a testa em relação a três condições em ordem. Quatro pontos explicam por que ela se comporta dessa maneira.
- A ordem importa: O VBA para no primeiro ramo que retorna Verdadeiro. Colocando Pontuação >= 50 antes Pontuação >= 90 classificaria todas as pontuações altas como aprovação.
- "Else" é o termo genérico: Qualquer valor que falhe em todos os testes anteriores passa para o bloco Else, de forma que nenhuma entrada fique sem tratamento.
- Sem encadeamento: O VBA não consegue ler 0 <= Pontuação <= 100. Escrever Se a pontuação for maior ou igual a 0 e menor ou igual a 100, então usando o Operadores lógicos ao invés.
- Mesmo teste, outras estruturas: A mesma condição aciona os operadores Do While e Select Case, portanto, eles são transferidos para todos os loops que você escrever.
💡 Dica: Declare a variável com um tipo numérico, como mostrado com Dim Score o mais longo possívelSe o valor permanecer como um texto de variante, “9” > “10” Retorna True porque a comparação é feita caractere por caractere.
Comparando texto e datas em VBA
Numbers A comparação é exatamente como a aritmética sugere, mas textos e datas seguem suas próprias regras, e ambos surpreendem os iniciantes.
As strings são comparadas um caractere por vez usando sua posição de classificação, portanto, “Apple” < “Banana” retorna True. Por padrão, a comparação diferencia maiúsculas de minúsculas, o que significa que “guru99” = “Guru99” retorna Falso. Colocando Opção Comparar Texto No início do módulo, a linha `strComp` faz com que todas as comparações de strings nesse módulo ignorem maiúsculas e minúsculas. Para um único teste sem alterar o módulo, use `strComp` com o argumento `vbTextCompare`.
As datas são armazenadas como números de série contados a partir de 30 de dezembro de 1899, portanto, são comparáveis diretamente com os mesmos seis operadores. Escrita Se a data de vencimento for menor que a data, então Detecta corretamente um item em atraso, pois a função Date retorna a data atual do sistema como o mesmo tipo de número de série. A única exceção é uma data armazenada como texto: “01/02/2026”, lida de um arquivo importado, é uma string, não uma data, e a comparação é feita alfabeticamente. Converta-a com a função CDate antes de testá-la.
Conhecer as regras para cada tipo elimina a maioria das surpresas, mas alguns erros ainda podem pegar até mesmo os desenvolvedores mais experientes desprevenidos.
Erros comuns ao comparar valores em VBA
Os cinco problemas abaixo são responsáveis pela maioria das comparações que retornam um resultado inesperado.
- Tarefa confundida com comparação: Fora de uma determinada condição, x = 5 Armazena 5 em x. Dentro do If, os mesmos símbolos testam a igualdade. O VBA não possui um operador == separado, portanto, leia o contexto com atenção.
- Testes Double Valores para igualdade exata: A precisão armazenada significa que 0.1 + 0.2 = 0.3 retorna False. Compare a diferença arredondada, por exemplo. Se Abs(a – b) < 0.000001 Então.
- Comparar qualquer coisa com Nulo: Nulo não é igual a nada, nem mesmo a outro nulo. Teste com IsNull em vez de... = Nulo.
- Comparar texto com um número: Uma célula contendo o texto “100” não é igual ao número 100. Converta com CLng ou CDbl antes do teste.
- Lendo .Text em vez de .Value: A propriedade .Text retorna o que é exibido, truncado pela largura da coluna e pela formatação. Sempre compare com .Value.
Baixe a planilha do Excel acima. Code

