VBA InStr

Função Excel VBA InStr

Instr em VBA é usado para descobrir a posição de uma determinada substring em uma string depois de especificarmos o método de comparação para a função, existem quatro métodos de comparação diferentes para esta função, Instr é uma função de string, mas a saída retornada pela função é numérico, então a saída dessa função está em uma variável inteira.

String no VBA nada mais é do que uma série de caracteres, ou seja, todos os textos fornecidos com aspas duplas são tratados como strings. Função InStr é uma função de texto embutida usada para manipular Strings. Por exemplo - se você deseja extrair uma substring de uma frase ou se deseja aplicar alterações de design de fonte a uma determinada string em uma série de caracteres ou se deseja encontrar a posição de um caractere e muitas outras possibilidades, você pode usar InStr.

Sintaxe

Possui 4 argumentos conforme mostrado na imagem abaixo.

  • [Iniciar]: Isso não é obrigatório. Este é o valor numérico que precisamos especificar de qual posição da string a função Instr começa a procurar o texto fornecido. Por exemplo: se você deseja pesquisar o caractere “a” na palavra “Bangalore” da 3ª posição, precisamos informar a posição inicial da função Instr como 3. Portanto, da 3ª posição, o caractere “a” está na 5ª posição. Se você ignorar este parâmetro, o valor padrão é 1.
  • String 1: Esta é a string real que estamos fornecendo, ou seja, a partir deste texto, estamos tentando encontrar a substring. Por exemplo, se você estiver procurando pela string “a” em “Bangalore”, String 1 em Bangalore.
  • String 2: Isso nada mais é que a string que estamos procurando. Por exemplo, se você estiver procurando pela string “a” em “Bangalore”, a string 2 é a .
  • [Compare]: Este é novamente um argumento opcional. Existem três tipos de opções disponíveis no argumento [compare].

  • vbBinaryCompare: Isso nada mais é do que uma pesquisa com diferenciação de maiúsculas e minúsculas da substring (string 2) na String 1. Por exemplo, se estivermos procurando por “a” na palavra “Bangalore”, Instr retornaria 2 como resultado e se você estiver pesquisando para “A” na palavra “Bangalore” Instr retornaria 0 como resultado porque a string fornecida é o valor em maiúsculas.

Também podemos colocar zero (0) como argumento.

vbTextCompare: Esta não é uma pesquisa com distinção entre maiúsculas e minúsculas da string 2 na string 1. Por exemplo, se estivermos procurando por “a” na palavra “Bangalore” Instr retornaria 2 como resultado e se você estiver procurando por “A” na palavra “Bangalore” Instr retornaria 2 também. A lógica é A = a, B = b, C = c etc.….

Também podemos colocar um (1) como argumento.

vbDatabaseCompare: É usado para comparar as informações de seu banco de dados, ou seja, banco de dados Microsoft Access.

Também podemos colocar um (-1) como argumento.

5 principais exemplos de uso da função VBA Instr

Você pode baixar este modelo Excel de função VBA Instr aqui - Modelo Excel de função VBA Instr

Exemplo 1

Vamos começar com o primeiro exemplo. Na palavra Bangalore, encontre a posição do caractere a.

O código abaixo executará a tarefa para nós.

Código:

 Sub Instr_Example1 () Dim i As Variant i = InStr ("Bangalore", "a") MsgBox i End Sub 

Agora execute o código VBA fornecido acima usando a tecla F5 ou você também pode executar este código manualmente, conforme mostrado na captura de tela fornecida abaixo.

Resultado:

Exemplo # 2

Agora, na palavra Bangalore, encontre a posição do caractere “a” na terceira posição.

O código abaixo irá realizar a tarefa para nós.

Código:

 Sub Instr_Example2 () Dim i As Variant i = InStr (3, "Bangalore", "a") MsgBox i End Sub 

Para executar o código fornecido acima, você pode usar a tecla F5 ou também executar este código manualmente, conforme mostrado na captura de tela fornecida abaixo.

Resultado:

Agora na imagem acima, veja a diferença em relação ao código anterior. Como mencionamos a posição inicial do caractere como 3, ele ignorou o primeiro caractere “a” na 2ª posição.

Exemplo # 3

Agora veremos a pesquisa com distinção entre maiúsculas e minúsculas. Na palavra Bangalore, encontre a letra “A”.

Para isso, precisamos fornecer o argumento compare como vbBinaryCompare.

Código:

 Sub Instr_Example3 () Dim i As Variant i = InStr (1, "Bangalore", "A", vbBinaryCompare) MsgBox i End Sub 

Agora execute este código usando a tecla F5 ou você também pode executar este código manualmente.

Resultado:

Como fornecemos o argumento compare como vbBinaryCompare Instr, a função retornou o resultado como zero porque não existe a letra “A” maiúscula .

Exemplo # 4

Agora veremos mais uma pesquisa com distinção entre maiúsculas e minúsculas. Na palavra Bangalore, encontre a letra “A”. O exemplo anterior retornou o resultado como zero.

Para superar a abordagem que diferencia maiúsculas de minúsculas aqui, precisamos fornecer o argumento compare como vbTextCompare.

Código:

 Sub Instr_Example4 () Dim i As Variant i = InStr (1, "Bangalore", "A", vbTextCompare) MsgBox i End Sub 

Agora execute este código usando a tecla F5 ou você também pode executar este código manualmente.

Resultado:

Exemplo # 5

Agora veremos o nível avançado da função Instr. Se você tiver muitas planilhas com um nome mais ou menos semelhante e quiser ocultar todas essas planilhas de uma vez, podemos usar o código abaixo para ocultar uma planilha específica.

Por exemplo, tenho 5 folhas chamadas Resumo 1, Resumo 2, Resumo 3, Resumo 4 e Folha de Dados.

Agora, quero ocultar todas as folhas que contêm a palavra “Resumo”. Use o código abaixo para ocultar todas as planilhas que contenham a palavra Resumo em seu nome.

Código:

 Sub To_Hide_Specific_Sheet () Dim Ws como planilha para cada Ws em ActiveWorkbook.Worksheets If InStr (Ws.Name, "Summary")> 0 Then Ws.Visible = xlSheetVeryHidden End If Next Ws 'A função InStr procura por palavra ou frase no nome da planilha 'Se encontrar, então ficará oculto End Sub 

Agora execute este código usando a tecla F5 ou você também pode executar este código manualmente e ver a saída.

Da mesma forma, a fim de exibir todas as folhas, use o código abaixo.

Código:

 Sub To_UnHide_Specific_Sheet () Dim Ws como planilha para cada Ws em ActiveWorkbook.Worksheets If InStr (Ws.Name, "Summary")> 0 Then Ws.Visible = xlSheetVisible End If Next Ws 'A função InStr procura por palavra ou frase no nome da planilha 'Se encontrar, então ficará oculto End Sub 

Agora execute este código usando a tecla F5 ou você também pode executar este código manualmente e ver a saída.

Coisas para lembrar

  • Instr é uma função que diferencia maiúsculas de minúsculas. Para eliminar esse problema de distinção entre maiúsculas e minúsculas, você precisa fornecer o argumento [compare] como.
  • If you are searching for case sensitive character you need to supply the [compare] argument as by default VBA takes this as the argument even if you do not supply.
  • Instr is a VBA function so that you cannot use it in an excel worksheet like other built-in formulas.
  • If the function cannot find the String 2 the result will be zero.