Blog

Postado em em 11 de março de 2021

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!

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?

Quer sair do zero no Power BI e virar uma referência na sua empresa? Inscreva-se agora mesmo no Power BI Impressionador