VBA INSTR – Localizar Texto em uma String

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Daniel Caramello

Last updated on July 5, 2023

Função INSTR

A função Instr do VBA verifica se uma cadeia de texto é encontrada em outra cadeia de texto. Ela retorna 0 (zero)  se o texto não for encontrado. Caso contrário, ela retorna a posição do caractere em que o texto foi encontrado.

A função Instr realiza correspondências exatas. Em vez disso, o operador Like do VBA pode ser usado para realizar correspondências inexatas/correspondência de padrões usando curingas.

Exemplo de Instr

O trecho de código a seguir procura na sequência  “Procure nesta String” a palavra “Procure”. A função Instr retorna 1 porque o texto foi encontrado na primeira posição.

Sub EncontreAlgumTexto()
  MsgBox InStr("Procure nesta String", "Procure")
End Sub

Esse segundo exemplo retorna 5 porque o texto é encontrado a partir da 5ª posição:

Sub EncontreAlgumTexto2()
  MsgBox InStr("Não Procure nesta string", "Procure")
End Sub

Importante! A função Instr faz distinção entre maiúsculas e minúsculas por padrão. Isso significa que “procure” não corresponderá a “Procure”. Para tornar o teste insensível a maiúsculas e minúsculas, leia abaixo.

Sintaxe de Instr

A sintaxe da função Instr é a seguinte:

Instr( [start], string, substring, [compare] )

[start] (opcional) – Esse argumento opcional é a posição inicial da pesquisa. Digite 1 para iniciar a pesquisa a partir da posição 1 (ou deixe em branco). Digite 5 para iniciar a pesquisa a partir da posição 5. Importante! A função INSTR calcula a posição do caractere contando a partir de 1 , NÃO da posição [start] .

string – A cadeia de texto a ser pesquisada.

substring – A cadeia de texto a ser encontrada na cadeia primária.

[compare] (opcional) – Por padrão, Instr faz distinção entre maiúsculas e minúsculas. Ao definir esse argumento, você pode tornar Instr insensível a maiúsculas e minúsculas:

Argumento vb Valor

Argumento Inteiro Descrição
vbBinaryCompare

0

(Padrão) Diferencia maiúsculas de minúsculas

vbTextCompare

1

Não diferencia maiúsculas de minúsculas

vbDatabaseCompare

2

Somente MS Access. Usa informações do banco de dados para realizar a comparação.

Posição Inicial do Instr

A posição inicial do Instr permite indicar a posição do caractere em que a pesquisa será iniciada. Entretanto, lembre-se de que a saída do Instr sempre contará a partir de 1.

Aqui, definimos a posição inicial como 3 para pular o primeiro B:

Sub Instr_PosicaoInicial()
  MsgBox InStr(3, "ABC ABC", "B")
End Sub

O resultado é 6 porque o segundo B é o sexto caractere da cadeia.

Teste de INSTR com Distinção entre Maiúsculas e Minúsculas

Por padrão, o VBA trata “L” diferente de “l”. Em outras palavras, o VBA é sensível a maiúsculas e minúsculas. Isso se aplica a todas as funções de texto. Para tornar o VBA insensível a maiúsculas e minúsculas, defina o argumento [compare] como 1 ou vbTextCompare.

Public Sub EncontrarTexto_IgnorarMaiusculasMinusculas()
  MsgBox InStr(1, "Não Procure nesta string", "procure", vbTextCompare)
End Sub

Como alternativa, você pode adicionar Option Compare Text à parte superior de seu módulo de código:

Option Compare Text

Public Sub FEncontrarTexto_IgnorarMaiusculasMinusculas2()
  MsgBox InStr("Não Procure nesta string", "procure")
End Sub

A opção Compare Text afetará todo o código desse módulo. Pessoalmente, coloco essa opção na parte superior de qualquer módulo que lide com texto porque nunca me preocupo com diferenças de maiúsculas e minúsculas.

Função InstrRev

A função Instr pesquisa a partir da esquerda. Em vez disso, você pode pesquisar a partir da direita usando a função InstrRev. A função InstrRev funciona de forma muito semelhante à função Instr.

Sub EncontreAlgumTexto_PartindoDaDireita()
  MsgBox InStrRev("Procure nesta String", "Procure")
End Sub

Assim como a função Instr, ela retornará 1 porque há apenas uma instância de “Procure” no texto. Mas se adicionarmos um segundo “Procure”, você verá que ela retorna a posição do “Look” mais à direita:

Sub EncontreAlgumTexto_PartindoDaDireita()
  MsgBox InStrRev("Procure nesta String Procure", "Procure")
End Sub

A seguir, analisaremos mais exemplos de Instr.

Codificação VBA facilitada

Pare de procurar códigos VBA on-line. Saiba mais sobre o AutoMacro – um construtor de código VBA que permite que os iniciantes codifiquem procedimentos do zero com conhecimento mínimo de codificação e com muitos recursos que economizam tempo para todos os usuários!

VBA Instr

Saiba mais!

Exemplos de InString

Se a String Contiver uma Substring

Aqui usaremos uma instrução If para testar se uma string contém uma substring de texto:

Public Sub EncontreAlgumTexto()

If InStr("Procure nesta string", "procure") = 0 Then
   MsgBox "Não há correspondência"
Else
   MsgBox "Pelo menos uma correspondência"
End If

End Sub

Localizar String em uma Célula

Você também pode localizar uma string em uma célula:

Sub Encontrar_String_Celula()
    If InStr(Range("B2").Value, "Dr.") > 0 Then
        Range("C2").Value = "Doutor"
    End If
End Sub

encontrar doutor

Ou percorrer um intervalo de células para testar se as células contêm algum texto:

Sub Procurar_Texto_No_Intervalo()
Dim celula As Range

    For Each celula In Range("b2:b6")
        If InStr(celula.Value, "Dr.") > 0 Then
            celula.Offset(0, 1).Value = "Doutor"
        End If
    Next celula
    
End Sub

procurar texto intervalo

Localizar a Posição de um Caractere em uma String

Esse código localizará a posição de um único caractere em uma cadeia de caracteres e atribuirá a posição a uma variável:

Sub Encontrar_Carac()
  Dim n As Long
  n = InStr("Aqui Procure Aqui", "P")
End Sub

Pesquisar Palavra na String

Esse código pesquisará uma palavra em uma String:

Sub Procurar_Palavra_Na_String()
    Dim n As Long
    n = InStr("Aqui Procure Aqui", "Procure")
  
    If n = 0 Then
        MsgBox "Palavra não encontrada"
    Else
        MsgBox "Palavra encontrada na posição: " & n
    End If
End Sub

Se a Variável Contiver uma String

Esse código testará se uma variável de string contém uma string de texto:

Sub Variavel_Contem_String()
    Dim str As String
    str = "Procure Aqui"
    
    If InStr(str, "Aqui") > 0 Then
        MsgBox "Aqui encontrado!"
    End If
End Sub

Instr e a Função Left

A função Instr pode ser usada com outras funções de texto, como Left, Right, Len e Mid, para cortar o texto.

Com a função Left, você pode gerar o texto antes de uma cadeia de texto:

Sub Instr_Left()
    Dim str As String
    Dim n As Long
    
    str = "Procure Aqui"
    
    n = InStr(str, "Aqui")
    
    MsgBox Left(str, n - 1)

End Sub

Uso de Instr no Microsoft Access VBA

Todos os exemplos acima funcionam exatamente da mesma forma no Access VBA e no Excel VBA.

exemplo vba access tracos

 

Para saber mais, leia nosso artigo: Funções de texto do VBA


<<Retornar aos exemplos do VBA

vba-free-addin

Exemplos de Add-ins de Códigos VBA

Acesse facilmente todos os exemplos de código que se encontram em nosso site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(Nenhuma instalação necessária!)

Baixe de Graça

Retornar aos Exemplos de Códigos VBA