Função VBA InStr: Guia Completo de Como Usar
Durante o uso de Excel VBA possivelmente já tenha se deparado com a Função InStr, ela é mais uma das imensas possibilidades de automatizar tarefas.
Essa Função é responsável para extrair textos em VBA. No entanto, pouco conhecida.
Através desse artigo vamos demonstrar diferentes exemplos de sua funcionalidade.
Por outro lado, é importante entender o que ela faz, como funciona.
O que é a Função VBA InStr?
VBA InStr é a funcionalidade do excel para descobrir a posição de uma substring em uma string depois de identificar o método de busca.
No entanto, precisamos entender outros conceitos.
Dentro da programação uma string é composta por textos.
Esses textos são responsáveis para formar frases ou palavras.
Após uma validação detalhada de uma string o resultado da função é numérica, ou seja uma pequena variável inteira.
Em outras palavras, podemos identificar que é a possibilidade de localizar a posição de um caracter dentro de um texto.
Ficou confuso? Vamos observar na prática como tirar proveito dessa Função em VBA.
Como Usar a Função VBA InStr?
Existem diferentes maneiras de usar a função, mas para dar início aos exemplos precisamos criar um novo projeto em VBA para utilizar a Função InStr.
Caso tenha pesquisado através da biblioteca de funções, a mesma não será localizada, visto se tratar de uma Função String do tipo texto.
Como vantagem, podemos vincular a mesma através de um código de macro.
Em primeiro lugar, conheceremos sua Sintaxe e principais argumentos.
Sintaxe Função InStr
A sintaxe da Função em VBA InStr, pode ser lida da seguinte forma:
InStr([Start],String1,String2,[Compare])
Para entender melhor, vamos detalhar.
- Start: Argumento de inserção opcional do tipo numérico. Em resumo, esse valor informa a função InStr a posição inicial para buscar algum determinado argumento. Caso a busca seja do início insira o valor de 1, por outro lado, se buscar o quarto caracter em diante informe o valor 4.
- String1: Informe a palavra que deseje buscar. Se estiver procurando a posição de B na palavra VBA, sua String1 será “VBA”.
- String2: Será sua substring, se estiver em busca da posição da letra B, então sua String2 será “B”.
- [Compare]: Alternativa opcional com três diferentes métodos a serem inseridos caso escolhido, sendo eles: vbBinaryCompare, vbTextCompare, vbDatabaseCompare.
Traduzindo os três métodos acima, podemos identificá-los:
- vbBinaryCompare: Comparação de caractere por caractere.
- vbTextCompare: Comparação do tipo textual.
- vbDatabaseCompare: Formato disponível apenas para o Microsoft Acces.
Por se tratar de uma função exclusiva do VBA, não é possível encontrá-la em funções na planilha de Excel.
A seguir, confira os principais exemplos da Função InStr.
1. Com Argumento Start Omitido
Como mencionamos anteriormente, o argumento Start ele é opcional. Em nosso primeiro exemplo, estaremos omitindo o argumento, ou seja, não informando qual a posição do caractere a iniciar.
Observe o código abaixo em VBA, o mesmo se repetirá nos demais exemplos com alteração de argumentos.
Na palavra Treinamentos, para encontrar a posição do caractere i use o código VBA a seguir:
Sub func_instr_exemplo_1 ()
Dim a As Integer
a = InStr("Treinamentos", "i")
MsgBox a
End Sub
Pressione F5 e observe que o resultado será: 4.
Em outras palavras, a letra i está localizada no quarto caractere da palavra Treinamentos.
Uma MsgBox será emitida.
2. Com Argumento Start Inserido
Em nosso segundo exemplo estaremos mantendo os mesmos critérios e palavras. No entanto, o Argumento do Start será 5.
Ou seja, a Função InStr irá iniciar apartir do 5° caractere da palavra Treinamentos.
Por outro lado, como observamos anteriormente ele estava localizado na posição 4.
Sub func_instr_exemplo_2()
Dim a As Integer
a = InStr(5, "Treinamentos", "i")
MsgBox a
End Sub
Portanto, pressione F5 e observe que o argumento não será localizado, e o MsgBox deve retornar 0.
Sempre que 0 for retornado o caractere não foi localizado.
3. Diferenciando Letra Minúscula de Maiúscula
Nesse próximo exemplo podemos observar que a Função InStr pode ser utilizada para diferenciar letras minúsculas de maiúsculas, para esse caso através do VBA use o argumento de comparação vbBinaryCompare.
Substitua a letra para maiúscula e altere o argumento inicial.
Sub func_instr_exemplo_3()
Dim a As Integer
a = InStr(2, "Treinamentos", "I", vbBinaryCompare)
MsgBox a
End Sub
Pressione F5 e observe que com a letra em maiúscula o retorno também foi 0.
4. Sem Diferenciar Letra Minúscula de Maiúscula
No entanto se precisarmos localizar tanto letras maiúsculas como minúsculas, nesse caso podemos substituir o argumento de comparação para vbTextCompare.
Nesse código as letras maiúsculas e minúsculas serão desconsideradas, favorecendo a localização.
Sub func_instr_exemplo_4()
Dim a As Integer
a = InStr(2, "Treinamentos", "I", vbTextCompare)
MsgBox a
End Sub
Pressione F5 e observe que sem diferenciar letras o retorno foi 4.
5. Criando uma Function Personalizada InStr em VBA
Em nosso quinto exemplo demonstramos a criação de uma Função Personalizada utilizando InStr com possibilidade de utilizar dentro da Planilha em Excel.
Criar Function é fantástico!
Observe o código abaixo.
Public Function FuncPersonalizada(Ref As Range) As Integer
Dim a As Integer
a = InStr(1, Ref, "a")
FuncPersonalizada = a
End Function
Como argumento, sempre que identificado a primeira letra a, será retornado a sua posição.
Acesse a planilha do seu Excel e agora busque pela Função FuncPersonalizada.
Use as referências nas células, pressione Enter e observe o resultado.
Em resumo, para cada letra encontrada, retornado a sua posição, onde 0 foi igual a não localizado.
Quando usar a Função InStr?
Aprendemos diferentes exemplos do seu uso. No entanto, a pergunta que fica é quando usar a Função InStr em VBA?
A resposta é que depende!
Depende de sua necessidade, observe que a possibilidade de criar uma função personalizada é sensacional, não apenas para esse caso em específico mas também para qualquer outra necessidade.
Com o uso do InStr podemos reunir diferentes necessidades e trazer resultados satisfatórios.
Portanto, utilize a criatividade a seu favor e identifique as melhores oportunidades de uso para a Função, sem dúvidas teremos diversos.
Confira algumas dicas extras de Excel VBA.
Sendo assim, finalizamos aqui nosso passo a passo referente ao uso da Função InStr no Excel VBA.