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.

  • ⚖️ Objetivo: Os operadores de comparação validam dados testando uma condição que resulta em Verdadeiro ou Falso.
  • 🔢 Seis Operatores: Igual, menor que, maior que, diferente de, menor ou igual a e maior ou igual a.
  • 🔁 Duplo papel: O sinal de igual compara o que está dentro de uma condição e atribui um valor a quem está fora dela.
  • 🧪 Declaração condicional: Cada comparação é colocada dentro de um bloco If, ElseIf ou Do While para controlar qual código será executado.
  • 🔤 Texto e datas: As strings são comparadas caractere por caractere e as datas são comparadas como números de série.
  • ⚠️ Armadilha de Precisão: Dois Double Valores que parecem idênticos podem falhar em um teste de igualdade, portanto, compare uma diferença arredondada.

Comparação VBA Operatoros

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

Igual Operator

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

Perguntas Frequentes

Não. O VBA avalia a primeira comparação como Verdadeiro ou Falso e, em seguida, compara esse resultado com 10, o que fornece uma resposta enganosa. Escreva os dois testes separadamente e combine-os com a operação "E".

O operador LIKE compara uma string com um padrão em vez de um valor exato. Os caracteres curinga incluem o asterisco para qualquer caractere e o ponto de interrogação para um caractere, portanto “Guru99” Curtir “Guru*” retorna Verdadeiro.

Use o operador Is, como em If ws Is Nothing Then. O sinal de igual compara valores, enquanto Is verifica se duas variáveis ​​de objeto apontam para o mesmo objeto, que é o único teste válido para objetos.

Sim. Descreva a regra em palavras simples, como sinalizar qualquer pedido acima de 500 feito antes de hoje, e um assistente de IA retornará a condição "se" correspondente. Verifique os valores limite antes de confiar nele.

Sim. Cole o bloco "Se" e um assistente de IA. tracO programa identifica qual ramo captura cada valor e, em seguida, aponta para um `ElseIf` inacessível ou uma comparação entre texto e um número. Confirme a correção passo a passo.ping através do código.

Resuma esta postagem com: