VBA InStr – Como Trabalhar com essa Função? [PASSO A PASSO]
Se você usa o VBA no seu dia a dia, talvez já tenha ouvido falar na função VBA InStr, mais uma versatilidade disponível nesse programa para automatizar as planilhas do trabalho.
Essa é uma função bastante simples de extrair texto em VBA, mas que poucas pessoas conhecem ou sabem aplicar, na prática.
Nesse conteúdo, vamos mostrar exemplos da função e explicar como ela pode ser usada.
Vale a pena conhecer e se aprofundar no assunto, especialmente se faz parte da sua rotina a análise de dados e estatísticas em grande volume de informação. Confira a seguir!
A função InStr do VBA retorna a posição numérica em que uma substring aparece dentro de outra string — InStr(“Brasil”, “a”) devolve 3, por exemplo. Se o texto não for encontrado, o retorno é 0. A sintaxe é InStr([início], texto_base, texto_procurado, [comparação]), e ela é a base para localizar e extrair textos nas macros do Excel.
O Que É a Função VBA InStr?
O VBA InStr é uma funcionalidade usada para descobrir a posição de uma determinada substring em uma string depois de se determinar o método de comparação para a função.
Mas o que isso significa, você pode estar se perguntando.
De forma resumida, dentro da linguagem de programação, considera-se uma string toda sequência de caracteres usados para formar frases e palavras.
Simplificando, uma string representa todo texto de um programa.
Existem quatro métodos principais de comparação para esse tipo de função, sendo a InStr uma função de string.
Contudo, a saída retornada pela função é numérica, sendo assim a saída se dá através de uma variável inteira.
Essa função normalmente está relacionada à ação de extrair texto ou localizar a posição de um texto de uma planilha complexa de dados.
Por exemplo, você pode aplicar a função InStr no seu Excel para extrair uma substring de uma frase ou alterar até mesmo o design de fonte de uma string, como deixar o texto em negrito ou itálico.
Como Usar a Função VBA InStr?

Existem diversas possibilidades de como utilizar essa função, mas para começar a usar a função VBA InStr é necessário abrir um novo projeto em Excel com o uso do VBA.
Afinal, a InStr é uma função interna da função String (texto) utilizada no Excel.
Como função VBA, ela pode ser aplicada no código de macro que é inserido por meio do editor do Microsoft Visual Basic.
A partir da definição dos métodos, a função fará uma pesquisa com distinção entre letras maiúsculas e minúsculas para localizar a posição da informação buscada ou para realizar a ação solicitada.
Essa função funciona em todas as versões do Excel em uso, do Microsoft 365 e Excel 2024 às edições anteriores, como Excel 2019, Excel 2016, Excel 2013, Excel 2010 e mais antigas.
Exemplos Práticos da Função VBA InStr

Antes de mostrar os exemplos aplicados na prática, é importante saber como a função VBA InStr pode ser usada.
De modo geral, são 4 métodos usados:
- String 1: Representa a string real fornecida na função, isto é, o texto usado para encontrar a substring.
- String 2: Equivale ao que se está pesquisando na função. Por exemplo, se a String 1 é a palavra Brasil e o que está buscando é a letra “a”, a letra a representa a String 2.
- [Compare]: Representa a comparação ou localização de algo mais específico na String, se dividindo entre vbBinaryCompare, vbTextCompare e vbDatabaseCompare.
- vbBinaryCompare: Realiza a pesquisa com distinção de maiúsculas e minúsculas, podendo retornar como 0. Por exemplo, na palavra Amapá, o resultado pela busca de “A” é igual a 1.
- vbTextCompare: Código que não distingue maiúsculas e minúsculas. Na String Cascavel, por exemplo, a procura por “C” retornaria como 2, assim como a busca por “c”. Na lógica, A = a, B = b etc.
- vbDatabaseCompare: Usado para comparar as informações do banco de dados.
Exemplo 1
Na palavra Brasil, para encontrar a posição do caractere a use o código VBA Instr a seguir:
- Sub Instr_Example1 ()
- Dim i As Variant
- i = InStr (“Brasil”, “a”)
- MsgBox i
- End Sub
Na sequência, execute o código acima apertando a tecla F5 ou manualmente. O resultado numérico declarado será: 3
Exemplo 2
Na palavra Argentina, para encontrar a posição do a na segunda posição deve-se seguir o código:
- Sub Instr_Example2 ()
- Dim i As Variant
- i = InStr (2, “Argentina”, “a”)
- MsgBox i
- End Sub
Execute o código apertando F5. Como nesse exemplo, a contagem começa a partir da posição 2, o primeiro a é ignorado na contagem. Por isso, o resultado na função deve aparecer como posição 9.
Exemplo 3
Nesse outro exemplo, é possível perceber como a VBA Instr pode ser usada para localizar nos textos com distinção de maiúscula com o código vbBinaryCompare. Por exemplo, na palavra Música, para localizar a letra I:
- Sub Instr_Example3 () Dim i As Variant
- i = InStr (1, “Música”, “I”, vbBinaryCompare)
- MsgBox i End Sub
Apertando o F5 para executar o código, você terá como resultado a posição 0, pois a função não terá encontrada uma letra maiúscula correspondente.
Exemplo 4
Caso prefira esse conteúdo do Exemplo 4 no formato de vídeo-aula, assista ao vídeo abaixo!
O que você aprende neste vídeo
Resposta rápida: O InStr devolve a posição de um trecho dentro de um texto, e é ele que destrava os outros: Left pega da esquerda, Right da direita, Mid pega do meio e Len dá o total de caracteres. Achando as posições dos separadores, os três primeiros extraem cada pedaço. Uma estrutura de repetição substitui o número fixo da linha por uma variável.
Neste vídeo (17 min):
- 0:40 - O exemplo: um código único com nome, sobrenome e curso separados por hífen.
- 1:40 - Abrir o editor do VBA e inserir um módulo para escrever a macro.
- 2:30 - Identificar o padrão do texto antes de escrever qualquer linha de código.
- 3:00 - Guardar o conteúdo da célula dentro de uma variável.
- 3:20 - Usar
InStrpara achar a posição do primeiro separador. - 4:20 - Rodar passo a passo com
F8e acompanhar o valor de cada variável. - 5:00 - Achar o segundo separador com o argumento opcional de início da busca.
- 6:00 - Extrair o nome com
Left, que conta a partir da esquerda. - 7:00 - Como calcular o comprimento a partir da posição do separador.
- 7:40 - Extrair o curso com
Right, que exige uma conta diferente. - 8:00 - Usar
Lenpara saber o total de caracteres do texto. - 9:30 - Extrair o sobrenome com
Mid, que pede o começo e o comprimento. - 11:00 - Ajustar a conta por causa dos espaços em volta dos separadores.
- 13:00 - A estrutura de repetição, que troca o número fixo da linha por uma variável.
Trechos do vídeo:
- O terceiro argumento do InStr define de onde a busca começa. Sem ele, procurar o segundo separador devolve a posição do primeiro de novo.
- Sem a estrutura de repetição, cada linha da planilha exige trocar o número à mão no código. Com ela, o mesmo bloco roda uma vez para cada linha da faixa.
Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:
Veja abaixo a disposição de 6 exemplos que temos:

Necessitamos, por meio de um código e artifícios via VBA separar em 3 colunas diferentes as 3 informações: nome, sobrenome e curso.
Com o código abaixo, isso será conseguido. Acompanhe!
<strong>Sub extrairCodigo()</strong><br><br><strong> For linha = 2 To 6</strong><br><br><strong> texto = Cells(linha, 1).Value</strong><br><strong> </strong><br><strong> priTraco = InStr(texto, "-")</strong><br><br><strong> segTraco = InStr(priTraco + 1, texto, "-")</strong><br><br><strong> nome = Left(texto, priTraco - 2)</strong><br><strong> sobrenome = Mid(texto, priTraco + 2, segTraco - priTraco - 3)</strong><br><strong> curso = Right(texto, Len(texto) - segTraco - 1)</strong><strong> </strong><br><br><strong> Cells(linha, 2).Value = nome</strong><br><strong> Cells(linha, 3).Value = sobrenome</strong><br><strong> Cells(linha, 4).Value = curso</strong><br><strong> Next</strong><br><br><strong>End Sub</strong>Explicação do código acima:
- Utilizando uma estrutura de repetição do tipo For, fazer as ações repetidas, da linha 2 até a linha 6:
- Armazenar na variável “texto” o valor da célula na linha representada pela variável “linha”, na coluna A
- Armazenar na variável “priTraco” o número resultante da função InStr, procurando a palavra no texto representado pela variável “texto” o pedaço de texto “-“ (hífen)
- Armazenar na variável “segTraco” o número resultante da função InStr, procurando na posição representada pela posição resultante da soma de “priTraco” + 1 (posição seguinte ao primeiro traço daquele texto inteiro), a palavra no texto representado pela variável “texto” o pedaço de texto “-“ (hífen)
- Armazenar na variável “nome” o resultante da função Left, que vai pegar uma cadeia de texto a partir da esquerda, que é o que está no texto “texto” até a posição representada por “priTraco” -2. Aqui o resultado esperado é o que tem no começo da palavra, até a última letra, antes do 1º traço
- Armazenar na variável “sobrenome” o resultante da função Mid, que vai pegar uma cadeia de texto a partir de uma determinada posição, que é o que está no texto “texto”, considerando a partir da posição representada por “priTraco” + 2, até a posição representada por “segTraco” – “priTraco” – 3. Aqui o resultado esperado é o que tem no começo da 2ª palavra, até a última letra da 2ª palavra, antes do 2º traço
- Armazenar na variável “curso” o resultante da função Right, que vai pegar uma cadeia de texto a partir da direita, que é o que está no texto “texto”, considerando até a posição representada por pela quantidade de caracteres da variável “texto” – “segTraco” – 1. Aqui o resultado esperado é o que tem no começo da 3ª palavra, até a última letra da 3ª palavra, depois do 2º traço
- Armazenar no valor da célula na linha representada pela variável “linha”, na coluna B, o que estiver na variável “nome”
- Armazenar no valor da célula na linha representada pela variável “linha”, na coluna C, o que estiver na variável “sobrenome”
- Armazenar no valor da célula na linha representada pela variável “linha”, na coluna D, o que estiver na variável “curso”
Destrinchando um dos textos para facilitar o entendimento:

O esperado, se rodássemos o código, para essa linha específica, seria:

Rodando o código, teremos o seguinte resultado:

Veja que agora temos os nomes, sobrenomes e cursos separados, em colunas diferentes, da forma como queríamos no começo da aula.
Perguntas frequentes
1. O que a função InStr retorna quando não encontra o texto?
Quando a substring não existe dentro do texto pesquisado, a InStr retorna 0. Encontrando, ela devolve a posição do primeiro caractere da ocorrência, contando a partir de 1 — em InStr(“Brasil”, “a”), o resultado é 3. Esse retorno numérico permite usar a função dentro de condições e cálculos nas macros.
2. Qual a diferença entre vbBinaryCompare e vbTextCompare no VBA InStr?
O vbBinaryCompare diferencia maiúsculas de minúsculas: buscar a letra I maiúscula em Música retorna 0, porque só existe o i minúsculo. Já o vbTextCompare ignora essa distinção e trata A e a como equivalentes. Há ainda o vbDatabaseCompare, usado para comparações com informações de banco de dados no Access.
3. Como separar nome, sobrenome e curso de um texto com InStr?
Localize os delimitadores com a InStr — a posição do primeiro hífen e, começando a busca depois dele, a do segundo — e recorte com Left, Mid e Right. O Left pega o trecho antes do primeiro traço, o Mid extrai o miolo e o Right captura o final, preenchendo três colunas em um loop For.
4. Existe uma versão da InStr que busca de trás para frente?
Sim, a InStrRev: ela procura a substring começando pelo final do texto e devolve a posição da última ocorrência. É útil, por exemplo, para achar a última barra de um caminho de arquivo e isolar só o nome dele. A contagem da posição, porém, continua sendo feita do início da string.
Conclusão
Reunimos aqui as principais dicas e uma breve definição sobre o que é a função VBA InStr.
Nos exemplos, você pode observar que existem diversas formas de aplicar esse recurso no seu trabalho para buscar a posição de uma determinada informação dentro do texto.
A ideia é que essa função e todas as outras do VBA possam ajudar a tornar a sua rotina ainda mais simples e prática.
Quer saber mais sobre esse universo de VBA e Excel avançado? Não perca tempo. Existem cursos, como os da #Treinamentos, para todos os níveis.
Para aprender sobre o VBA do zero, você pode ler nosso artigo que fala sobre VBA e começar agora a aprender mais sobre o assunto.
Explore mais uma possibilidade para tornar seu currículo profissional ainda mais atrativo e para se destacar no mercado de trabalho.
Hashtag Treinamentos
Para acessar outras publicações de VBA, clique aqui!

