Postado em em 11 de março de 2021

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!

Quer aprender a trabalhar com o VBA do zero? Então conheça o Curso Completo Online e com certificação de VBA da Hashtag Treinamentos!

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?

como-usar-a-funcao-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 pode ser utilizada em diversos modelos do Excel, tais como o Excel para Office 365, Excel 2019, Excel 2016, Excel 2013, Excel 2011 para Mac, Excel 2010, Excel 2007, Excel 2003, Excel XP e o mais recente Excel 2000.

Exemplos Práticos da Função VBA InStr

vba-instr-exemplos-praticos

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!

Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:

Veja abaixo a disposição de 6 exemplos que temos:

Função para manipulação de textos no vba
Função para manipulação de textos no vba

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!

Sub extrairCodigo()

    For linha = 2 To 6

        texto = Cells(linha, 1).Value
 
        priTraco = InStr(texto, "-")

        segTraco = InStr(priTraco + 1, texto, "-")

       nome = Left(texto, priTraco - 2)
       sobrenome = Mid(texto, priTraco + 2, segTraco - priTraco - 3)
       curso = Right(texto, Len(texto) - segTraco - 1)      

       Cells(linha, 2).Value = nome
       Cells(linha, 3).Value = sobrenome
       Cells(linha, 4).Value = curso
   Next

End Sub

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:

Função de texto no VBA
Função de texto no VBA

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

2 6

Rodando o código, teremos o seguinte resultado:

3 3

Veja que agora temos os nomes, sobrenomes e cursos separados, em colunas diferentes, da forma como queríamos no começo da aula.

Aprenda a trabalhar com VBA do zero agora. Conheça o Curso Completo Online e com certificação de VBA da Hashtag Treinamentos!

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!


Quer aprender mais sobre VBA com um minicurso básico gratuito?