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!
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 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
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:
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:
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.
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!
Sócio e especialista em VBA da Hashtag Treinamentos. Criador do Método Impressionador para ensinar pessoas comuns a crescerem na carreira e se destacarem na empresa usando o VBA.