Encontrar texto em uma string (função INSTR) - exemplos de código VBA

Função INSTR

A função VBA Instr verifica se uma string de texto é encontrada em outra string de texto. Retorna 0 se o texto não for encontrado. Caso contrário, ele retorna a posição do caractere onde o texto foi encontrado.

A função Instr realiza exato fósforos. O VBA Like Operator pode ser usado em vez de executar correspondências / correspondência de padrões inexatas usando curingas.

Exemplo Instr

O seguinte trecho de código pesquisa a string “Look in this string” para a palavra “Look”. A função Instr retorna 1 porque o texto é encontrado na primeira posição.

123 Sub FindSomeText ()MsgBox InStr ("Look in this string", "Look")End Sub

Este segundo exemplo retorna 7 porque o texto é encontrado começando na 7ª posição:

123 Sub FindSomeText2 ()MsgBox InStr ("Não olhe nesta string", "Olhe")End Sub

Importante! A função Instr é maiúsculas e Minúsculas por padrão. Isso significa que “aparência” não corresponderá a “aparência”. Para tornar o teste sem distinção entre maiúsculas e minúsculas, leia abaixo.

Sintaxe Instr

A sintaxe para a função Instr é a seguinte:

1 Instr ([iniciar], string, substring, [comparar])

[iniciar] (opcional) - Este argumento opcional é a posição inicial da pesquisa. Digite 1 para iniciar a busca a partir da posição 1 (ou deixe em branco). Digite 5 para iniciar a busca a partir da posição 5. Importante! A função INSTR calcula a posição do caractere contando a partir de 1 NÃO da posição [inicial].

fragmento - A string de texto a ser pesquisada.

substring - A string de texto a ser encontrada na string primária.

[comparar] (opcional) - Por padrão, Instr diferencia maiúsculas de minúsculas. Ao definir este argumento, você pode tornar insensível a maiúsculas e minúsculas:

Valor do argumento vb

Argumento Inteiro Descrição
vbBinaryCompare

0

(Padrão) Sensível a maiúsculas e minúsculas

vbTextCompare

1

Não diferencia maiúsculas de minúsculas

vbDatabaseCompare

2

Apenas MS Access. Usa informações do banco de dados para fazer a comparação.

Posição inicial instr

A posição inicial de Instr permite que você indique a posição do caractere onde você iniciará sua pesquisa. No entanto, lembre-se de que a saída Instr sempre contará a partir de 1.

Aqui, definimos a posição inicial para 3 para pular o primeiro B:

123 Sub Instr_StartPosition ()MsgBox InStr (3, "ABC ABC", "B")End Sub

O resultado é 6 porque o segundo B é o 6º caractere da string.

Teste INSTR que não diferencia maiúsculas de minúsculas

Por padrão, o VBA trata “L” diferente de “l”. Em outras palavras, o VBA diferencia maiúsculas de minúsculas. Isso é verdade para todas as funções de texto. Para tornar o VBA insensível a maiúsculas e minúsculas, defina o argumento [compare] como 1 ou vbTextCompare.

123 Public Sub FindText_IgnoreCase ()MsgBox InStr (1, "Não olhe nesta string", "olhe", vbTextCompare)End Sub

Como alternativa, você pode adicionar Option Compare Text no topo do seu módulo de código:

1 Texto de comparação de opções
12345 Texto de comparação de opçõesPublic Sub FindText_IgnoreCase2 ()MsgBox InStr ("Não olhe nesta string", "olhe")End Sub

A opção Comparar texto afetará todo o código nesse módulo. Eu pessoalmente coloco isso no topo de qualquer módulo que lida com texto porque nunca me importo com diferenças entre maiúsculas e minúsculas.

Função InstrRev

A função Instr pesquisa a partir da esquerda. Em vez disso, você pode pesquisar da direita usando a função InstrRev. A função InstrRev funciona de forma muito semelhante à função Instr.

123 Sub FindSomeText_FromRight ()MsgBox InStrRev ("Look in this string", "Look")End Sub

Assim como a função Instr, ela retornará 1 porque há apenas uma instância de “Look” no texto. Mas se adicionarmos um segundo “Look”, você verá que ele retorna a posição do “Look” mais à direita:

123 Sub FindSomeText_FromRight ()MsgBox InStrRev ("Look in this string Look", "Look")End Sub

A seguir, revisaremos mais exemplos de Instr.

Exemplos InString

Se a string contém substring

Aqui, usaremos uma instrução If para testar se uma string contém uma substring de texto:

123456789 Public Sub FindSomeText ()If InStr ("Look in this string", "look") = 0 ThenMsgBox "Sem correspondência"OutroMsgBox "Pelo menos uma correspondência"Fim seEnd Sub

Encontrar string de texto em uma célula

Você também pode encontrar uma string em uma célula:

12345 Sub Find_String_Cell ()If InStr (Range ("B2"). Value, "Dr.")> 0 ThenIntervalo ("C2"). Valor = "Médico"Fim seEnd Sub

Ou percorra um intervalo de células para testar se as células contêm algum texto:

12345678910 Sub Search_Range_For_Text ()Dim cell como rangePara cada célula no intervalo ("b2: b6")Se InStr (cell.Value, "Dr.")> 0 Entãocell.Offset (0, 1) .Value = "Doutor"Fim sePróxima célulaEnd Sub

Encontre a posição de um personagem em uma string

Este código encontrará a posição de um único caractere em uma string e atribuirá a posição a uma variável:

1234 Sub Find_Char ()Dim n As Longn = InStr ("Aqui Olhe Aqui", "L")End Sub

String de pesquisa para palavra

Este código pesquisará uma string por uma palavra:

12345678910 Sub Search_String_For_Word ()Dim n As Longn = InStr ("Olhe aqui", "Olhe")Se n = 0 entãoMsgBox "Palavra não encontrada"OutroMsgBox "Palavra encontrada na posição:" & nFim seEnd Sub

Se a variável contiver string

Este código testará se uma variável de string contém uma string de texto:

12345678 Sub Variable_Contains_String ()Dim str As Stringstr = "Olhe aqui"If InStr (str, "Here")> 0 ThenMsgBox "Encontrado aqui!"Fim seEnd Sub

Instr e a função esquerda

Instr pode ser usado junto com outras funções de texto como Left, Right, Len e Mid para cortar o texto.

Com a função Left, você pode gerar o texto antes de uma string de texto:

1234567891011 Sub Instr_Left ()Dim str As StringDim n As Longstr = "Olhe aqui"n = InStr (str, "Aqui")MsgBox Left (str, n - 1)End Sub

Usando Instr no Microsoft Access VBA

Todos os exemplos acima funcionam exatamente da mesma forma no Access VBA e no Excel VBA.

Para saber mais, leia nosso artigo: funções de texto VBA

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave