VBA – Operador Like
No VBA, você pode comparar duas cadeias de caracteres usando o operador Like para verificar a correspondência das cadeias. Neste tutorial, você aprenderá a usar esse operador com diferentes padrões.
Se você quiser aprender a comparar cadeias de caracteres no VBA, clique aqui: VBA Comparar Strings – StrComp
Se você quiser aprender a usar operadores de comparação, clique aqui: Operadores de comparação do VBA – Not Equal to e outros
Uso do Operador Like para Comparar Duas Cadeias de Caracteres
Com o operador Like, podemos verificar se uma cadeia de caracteres começa com um texto específico, se o inclui etc. Por padrão, o operador Like compara caracteres usando o método Binary. Isso significa que o operador faz distinção entre maiúsculas e minúsculas. Se você quiser torná-lo insensível a maiúsculas e minúsculas, precisará colocar a opção Compare Text na parte superior do módulo. Usando esse método, o operador Like considera “S” e “s” como os mesmos caracteres. Em nossos exemplos, usaremos a comparação padrão com distinção entre maiúsculas e minúsculas.
Se a correspondência existir, o operador Like retornará True (Verdadeiro) como resultado ou False (False), caso contrário.
Primeiro, veremos o exemplo simples em que queremos verificar se nossa variável de cadeia de caracteres começa com Sr. Para fazer isso, você precisa colocar um asterisco (*) no final do texto correspondente(Sr*). Aqui está o código:
Sub LikeExemplo()
Dim strNome As String
Dim blnResultado As Boolean
strNome = "Sr. Michael James"
If strNome Like "Sr*" Then
blnResultado = True
Else
blnResultado = False
End If
End Sub
Neste exemplo, queremos verificar se a cadeia de caracteres strNome começa com Sr e retornar True ou False na variável blnResultado.
Primeiro, definimos o valor de strNome como Sr . Michael James:
strNome = "Sr. Michael James"
Em seguida, usamos o operador Like na instrução If:
If strNome Like "Sr*" Then
blnResultado = True
Else
blnResultado = False
End If
Como o strNome começa com Sr, o blnResultado retorna True (Verdadeiro):
Imagem 1. Uso do operador Like para verificar se a cadeia de caracteres começa com determinados caracteres
Uso do Operador Like com Diferentes Padrões de Correspondência
O operador Like pode verificar a correspondência de duas cadeias de caracteres com base em padrões diferentes. Aqui está a lista de possíveis padrões de correspondência:
Código do padrão |
Tipo de correspondência |
* |
Corresponde a 0 ou mais caracteres |
? |
Corresponde a um único caractere |
# |
Corresponde a um único dígito |
[chars] |
Corresponde a um único caractere de uma lista de caracteres |
[A-Z] |
Corresponde a qualquer caractere maiúsculo do alfabeto |
[A-Za-z] |
Corresponde a qualquer caractere do alfabeto |
[!chars] |
Corresponde a um único caractere excluindo uma lista de caracteres |
Agora podemos ver como usar esses padrões no código. Aqui está o exemplo de vários padrões:
Correspondência de um único caractere:
strTexto1 = "ABCDE"
If strTexto1 Like "AB?DE" Then
blnResultado1 = True
Else
blnResultado1 = False
End If
Correspondência de um único dígito:
strTexto2 = "AB7DE"
If strTexto2 Like "AB#DE" Then
blnResultado2 = True
Else
blnResultado2 = False
End If
Corresponde a qualquer caractere maiúsculo do alfabeto:
strTexto3 = "ABCDE"
If strTexto3 Like "AB[A-Z]DE" Then
blnResultado3 = True
Else
blnResultado3 = False
End If
Não corresponde a nenhum caractere maiúsculo do alfabeto:
strTexto4 = "AB7DE"
If strTexto4 Like "AB[!A-Z]DE" Then
blnResultado4 = True
Else
blnResultado4 = False
End If
Corresponde a qualquer caractere do alfabeto (maiúsculo ou minúsculo):
strTexto5 = "ABcDE"
If strTexto5 Like "AB[A-Za-z]DE" Then
blnResultado5 = True
Else
blnResultado5 = False
End If
Ao executar o código, você pode ver que o operador Like retorna True nas variáveis blnResultado para cada comparação:
Imagem 2. Uso do operador Like com diferentes padrões de correspondência