VBA StrComp - Compare Strings em VBA usando a função StrComp

Função Excel VBA StrComp

VBA StrComp é uma função integrada 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, vou mostrar 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 = Comparar 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 do 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

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 os casos 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 verificará 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.

We need to compare String 1 with String 2 and arrive at the Result as “Exact” if both are the same, else the result should be “Not Exact.”

The below code will do the job for us.

Code:

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

When I run the above VBA code in Excel, we will get the below result.

If you look at C4 cell String 1 and String 2 are the same, but the characters are case sensitive, so the result is “Not Exact.” To overcome this issue, we need to supply the Compare as 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.

Artigos interessantes...