VBA StrComp

Função Excel VBA StrComp

VBA StrComp é uma função embutida usada para comparar se os dois valores de string são iguais ou não. No entanto, os resultados não são padronizados como VERDADEIRO ou FALSO, como na planilha, mas são diferentes.

Antes de examinarmos os resultados, mostrarei primeiro a sintaxe da função StrComp.

  • String 1: String 1 é a primeira string ou valor que estamos comparando.
  • String 2: String 2 é a segunda string ou valor que estamos comparando com a String 1 .
  • Compare: Podemos fornecer três opções aqui.
      • 0 = comparação binária. Isso executa cálculos com distinção entre maiúsculas e minúsculas. Por exemplo, “Hello” não é igual a “HELLO” porque os casos das palavras são diferentes. Este é o valor padrão se você ignorar este parâmetro. vbBinaryCompare
      • 1 = Comparação de texto. Esta opção executa cálculos sem distinção entre maiúsculas e minúsculas. Por exemplo, “Hello” é igual ao evento “HELLO” embora os casos das palavras sejam diferentes. vbTextCompare
      • 2 = Comparação de acesso. Isso executa a comparação do banco de dados.

Resultados da função de comparação de strings (StrComp)

Como eu disse, quando comparamos dois valores na planilha, obtemos o resultado como TRUE ou FALSE. Mas com a função de comparação de strings VBA os resultados não são os mesmos.

  • Obtemos zero (0) quando String 1 é igual a String 2.
  • Obtemos um (1) quando o valor da String 1 é maior que o Valor da String 2 .
  • Obtemos menos um (-1) quando o valor da String 1 é menor do que a String 2
  • Obtemos NULL quando o valor da String 1 ou String 2 é NULL.

Exemplos para usar a função VBA StrComp

Você pode baixar este modelo VBA StrComp Excel aqui - modelo VBA StrComp Excel

Exemplo 1

Vamos começar com um exemplo simples. Por exemplo, compararemos dois valores, ou seja, “Excel VBA” e “Excel VBA”.

Código:

 Sub StrComp_Example1 () Dim FirstValue As String 'Para armazenar o valor String 1 Dim SecondValue As String' Para armazenar o valor String 2 Dim Result As String 'Para armazenar o resultado da fórmula StrComp FirstValue = "Excel VBA"' Atribuir o valor String 1 SecondValue = "Excel VBA" 'Atribuir o valor String 2 Result = StrComp (FirstValue, SecondValue, vbBinaryCompare)' Aplicar função StrComp MsgBox Result 'Mostrar o resultado na caixa de mensagem End Sub 

Quando eu executar este código, obteremos Zero (0) como resultado porque os valores da String 1 e da String 2 são iguais.

Exemplo # 2

Agora vou mudar o caso de duas palavras.

String 1 = Excel Vba

String 2 = Excel VBA

Código:

 Sub StrComp_Example2 () Dim FirstValue As String 'Para armazenar o valor String 1 Dim SecondValue As String' Para armazenar o valor String 2 Dim Result As String 'Para armazenar o resultado da fórmula StrComp FirstValue = "Excel Vba"' Atribuir o valor String 1 SecondValue = "Excel VBA" 'Atribuir o valor String 2 Result = StrComp (FirstValue, SecondValue, vbBinaryCompare)' Aplicar função StrComp MsgBox Result 'Mostrar o resultado na caixa de mensagem End Sub 

Quando eu executar este código, obteremos 1 porque, como fornecemos o argumento Compare como “ vbBinaryCompare”, ele verifica se há caracteres com distinção entre maiúsculas e minúsculas.

Agora vou mudar a opção Comparar de “ vbBinaryCompare” para “ vbTextCompare”

Código:

 Sub StrComp_Example3 () Dim FirstValue As String 'Para armazenar o valor String 1 Dim SecondValue As String' Para armazenar o valor String 2 Dim Result As String 'Para armazenar o resultado da fórmula StrComp FirstValue = "Excel Vba"' Atribuir o valor String 1 SecondValue = "Excel VBA" 'Atribuir o valor String 2 Result = StrComp (FirstValue, SecondValue, vbTextCompare)' Aplicar função StrComp MsgBox Result 'Mostrar o resultado na caixa de mensagem End Sub 

Com esta comparação, obteremos zero (0) porque vbaTextCompare ignora palavras com distinção entre maiúsculas e minúsculas.

Exemplo # 3

Estudo de caso de VBA StrComp com condição IF

Suponha que você tenha os dados como a imagem abaixo.

Precisamos comparar a String 1 com a String 2 e chegar ao Resultado como “Exato” se ambos forem iguais, caso contrário, o resultado deve ser “Não Exato”.

O código abaixo fará o trabalho para nós.

Código:

 Sub StrComp_Example4 () Dim Result As String Dim I As Integer For i = 2 To 6 Result = StrComp (Cells (i, 1) .Value, Cells (i, 2) .Value) If Result = 0 Then Cells (i, 3 ) .Value = "Exact" Else Cells (i, 3) .Value = "Not Exact" End If Next i End Sub 

Quando executo o código VBA acima no Excel, obteremos o resultado abaixo.

Se você observar a célula C4, a seqüência 1 e a seqüência 2 são iguais, mas os caracteres diferenciam maiúsculas de minúsculas, então o resultado é “Não exato”. Para superar esse problema, precisamos fornecer Compare como vbTextCompare.

Abaixo está o código modificado para obter o resultado “Exato” para a célula C4.

Código:

 Sub StrComp_Example4 () Dim Result As String Dim I As Integer For i = 2 To 6 Result = StrComp (Cells (i, 1) .Value, Cells (i, 2) .Value, vbTextCompare) If Result = 0 Then Cells (i , 3) .Value = "Exact" Else Cells (i, 3) .Value = "Not Exact" End If Next i End Sub 

Este código retornará o resultado abaixo.