Comparação de strings em VBA – StrComp
No VBA, você pode comparar duas sequências de caracteres usando a função StrComp. Neste tutorial, você aprenderá a usar essa função com diferentes métodos de comparação.
Se você quiser aprender a usar o operador like do VBA para comparar correspondências inexatas, clique aqui: VBA Operador Like.
Se você quiser aprender a usar operadores de comparação, clique aqui: Operadores de comparação VBA – Not Equal to e outros
Uso da Função StrComp para Comparar Duas Sequências de Caracteres
A função StrComp recebe duas sequências de caracteres e o método de comparação como argumentos. Há três métodos de comparação:
- vbBinaryCompare – compara duas sequências de caracteres binárias (diferencia maiúsculas de minúsculas);
- vbTextCompare – compara duas sequências de caracteres como textos (não diferencia maiúsculas de minúsculas);
- vbDatabaseCompare – esse método está disponível somente no Microsoft Access e não no VBA.
Por padrão, a função usa o método binário. Se omitirmos esse argumento, a função fará distinção entre maiúsculas e minúsculas.
A função retorna os seguintes resultados:
- 0 – se as sequências de caracteres forem iguais;
- -1 – se a sequência de caracteres 1 for menor que a sequência de caracteres 2;
- 1 – se a sequência de caracteres 1 for maior que a sequência de caracteres 2;
- Nulo – se uma das sequência de caracteres estiver vazia.
Aqui está o código de exemplo:
Dim intResultado As Integer
intResultado = StrComp("Computador", "Computador")
Neste exemplo, queremos verificar se as sequências de caracteres “Computador” e “Computador” são iguais, usando o método de comparação padrão (binário). O resultado da função está na variável intResultado. Como você pode ver na imagem, as duas sequências de caracteres são iguais, portanto, o intResultado tem valor 0.
Imagem 1. Uso da função StrComp com o método binário no VBA
Uso da Função StrComp com o Método Binário e Textual
Agora você verá a diferença entre usar o método binário e o textual. O método binário tem um número binário para cada caractere, portanto, as letras maiúsculas e minúsculas são caracteres diferentes nesse método. Por outro lado, o método textual considera “S” e “s” como as mesmas letras. Se quiser tornar a função insensível a maiúsculas e minúsculas, você precisará definir o terceiro argumento como vbTextCompare. Aqui está o código:
Dim intResultado1 As Integer
Dim intResultado2 As Integer
intResultado1 = StrComp("Computador", "CompuTador")
intResultado2 = StrComp("Computador", "CompuTador", vbTextCompare)
Queremos comparar as sequências de caracteres “Computador” e “CompuTador”, usando os dois métodos.
Na variável intResultado1, obteremos o valor com o método binário, enquanto a variável intResultado2 obterá o valor com o método textual. Você pode ver os valores dessas duas variáveis:
Imagem 2. Uso da função StrComp com método binário e textual
O valor de intResultado1 é 1, o que significa que duas sequências de caracteres são diferentes para o método binário. Para o método textual, essas duas sequências de caracteres são iguais, portanto, o valor de intResultado2 é 0.