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 para que a saída desta função seja 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 use 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 dizer à posição inicial da função Instr como 3. Portanto, da 3ª posição, o caractere “a” é na 5 th 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 é do 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 (comparar).

- 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ê estão procurando por “A” na palavra “Bangalore”, Instr retornaria 0 como resultado porque a string fornecida é um 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
Exemplo 1
Vamos começar com o primeiro exemplo. Na palavra Bangalore, encontre a posição do caractere a.
O código abaixo irá realizar 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, como mostrado na captura de tela fornecida abaixo.

Resultado:

Agora na imagem acima, observe 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:

Since we have supplied the compare argument as vbBinaryCompare Instr function returned the result as zero because there are no uppercase letter “A” exists.
Example #4
Now we will see one more case sensitive search. In the word Bangalore, find the letter “A.” The previous example returned the result as zero.
In order to overcome the case sensitive approach here, we need to supply the compare argument as vbTextCompare.
Code:
Sub Instr_Example4() Dim i As Variant i = InStr(1, "Bangalore", "A", vbTextCompare) MsgBox i End Sub
Now Run, this code using the F5 Key, or you can also run this code manually.

Output:

Example #5
Now we will see the advanced level of Instr function. If you have many sheets that have a more or less similar name and you want to hide all those sheets at once, we can use the below code to hide a specific sheet.
For example, I have 5 sheets named Summary 1, Summary 2, Summary 3, Summary 4, and Data Sheet.

Now I want to hide all those sheets which have the word “Summary.” Use the below code to hide all the sheets which have the word Summary in its name.
Code:
Sub To_Hide_Specific_Sheet() Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets If InStr(Ws.Name, "Summary")> 0 Then Ws.Visible = xlSheetVeryHidden End If Next Ws 'InStr function looks for word or phrase in the sheet name 'If it finds then it will be hidden End Sub
Now Run, this code using the F5 Key, or you can also run this code manually and see the Output.

Similarly, in order to unhide all those sheets, use the below code.
Code:
Sub To_UnHide_Specific_Sheet() Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets If InStr(Ws.Name, "Summary")> 0 Then Ws.Visible = xlSheetVisible End If Next Ws 'InStr function looks for word or phrase in the sheet name 'If it finds then it will be hidden End Sub
Now Run, this code using the F5 Key, or you can also run this code manually and see the Output.

Things to Remember
- Instr is a case sensitive function. In order to eliminate this case sensitive issue, you need to supply the (compare) argument as.
- 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 é uma função VBA, de forma que você não pode usá-la em uma planilha do Excel como outras fórmulas internas.
- Se a função não conseguir encontrar a String 2, o resultado será zero.