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.

PUBLICIDADE

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.

PUBLICIDADE

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:

PUBLICIDADE

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:

PUBLICIDADE
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.

msgbox-função-instr-excel-vba

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.

PUBLICIDADE

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!

PUBLICIDADE

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.

vba-instr-excel

Use as referências nas células, pressione Enter e observe o resultado.

function-vba-instr

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.

PUBLICIDADE

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.

Compartilhe
Rafael Schreiner

Rafael Schreiner

Artigos: 348