Impedir que o VBA Diferencie Maiúsculas de Minúsculas – Option Compare Text
Ao trabalhar no VBA, muitas vezes você precisa comparar cadeias de caracteres. Por padrão, 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 diferencie maiúsculas de minúsculas.
Como Tornar 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 Option Compare Text no início do módulo. Primeiro, veremos o comportamento padrão do VBA sem essa opção definida. Este é o código:
If Planilha1.Range("A1").Value = Planilha1.Range("B1").Value Then
MsgBox "Dois textos são iguais"
Else
MsgBox "Dois textos são diferentes"
End If
No exemplo, queremos comparar as cadeias de caracteres de A1 e B1. Se as cadeias de caracteres 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. Comparação das cadeias de caracteres sem o Option Compare Text
Como você pode ver na imagem, os dois textos são iguais, mas o primeiro está em letras maiúsculas, enquanto o segundo está em letras minúsculas. Por esse motivo, o VBA os considera diferentes e retorna essa mensagem.
Agora, adicionaremos o Option Compare Text no início do módulo e veremos a diferença. Aqui está o código. Executamos o código no mesmo exemplo:
Option Compare Text
Public Sub TesteMaisuculasMinusculas()
If Planilha1.Range("A1").Value = Planilha1.Range("B1").Value Then
MsgBox "Dois textos são iguais"
Else
MsgBox "Dois textos são diferentes"
End If
End Sub
Imagem 2. Comparação das cadeias de caracteres com o Option Compare Text
Agora, quando a Option Compare Text é definido, o VBA não diferencia maiúsculas de minúsculas e considera esses dois textos iguais.
Comparação de Texto
Se você não declarar Option Compare Text, poderá converter os casos das cadeias de caracteres para fazer comparações sem distinção entre maiúsculas e minúsculas. Isso é possível por meio das funções UCase, LCase ou StrConv. Você pode saber mais sobre isso aqui: VBA Upper, Lower, and Proper Case – Funções Case