Ao trabalhar no VBA, geralmente você precisa comparar strings. Por padrão, VBA diferencia maiúsculas de minúsculas, portanto, se você comparar dois textos iguais e um deles estiver em maiúsculas e o outro em minúsculas, o VBA os considerará como textos diferentes. Neste tutorial, você verá como evitar que o VBA faça distinção entre maiúsculas e minúsculas.
Tornando o VBA insensível a maiúsculas e minúsculas
Para tornar o VBA insensível a maiúsculas e minúsculas, você precisa colocar Texto de comparação de opções no início do módulo. Primeiro, veremos o comportamento padrão do VBA sem esse conjunto de opções. Este é o código:
123456789 | Se Folha1.Range ("A1"). Valor = Folha1.Range ("B1"). Valor EntãoMsgBox "Dois textos são iguais"OutroMsgBox "Dois textos são diferentes"Fim se |
No exemplo, queremos comparar as strings de A1 e B1. Se as strings forem iguais, retornaremos a caixa de mensagem com a mensagem “Dois textos são iguais”. Se não forem iguais, retornaremos a mensagem “Dois textos são diferentes.
Imagem 1. Comparando as strings sem a opção Compare Text
Como você pode ver na imagem, os dois textos são iguais, mas o primeiro está em caixa alta, enquanto o segundo está em caixa baixa. Por causa disso, o VBA os considera diferentes e retornou esta mensagem.
1234567891011 | Texto de comparação de opçõesPublic Sub CaseSensitiveTest ()Se Folha1.Range ("A1"). Valor = Folha1.Range ("B1"). Valor EntãoMsgBox "Dois textos são iguais"OutroMsgBox "Dois textos são diferentes"Fim seEnd Sub |
Agora vamos adicionar Option Compare Text no início do módulo e ver a diferença. Aqui está o código. Executamos o código no mesmo exemplo:
Imagem 2. Comparando as strings com a opção Compare Text
Agora, quando a opção Option Compare Text é definida, o VBA torna-se insensível a maiúsculas e minúsculas e considera esses dois textos iguais.
Comparando Texto
Se você não declara Texto de comparação de opções, você pode converter casos de string para fazer comparações que não diferenciam maiúsculas de minúsculas. Isso é possível pela função UCase, LCase ou StrConv. Você pode descobrir mais sobre isso aqui: VBA Superior, Inferior e Caixa apropriada - Funções de caixa