Função Excel VBA InStr – explicada com exemplos

Ontem, recebi um e-mail de um dos meus leitores – junho.

Ela queria saiba como aplicar o formato de fonte em negrito a uma parte específica de uma string dentro de uma célula. Por exemplo, aplique o formato em negrito apenas à palavra ‘Hello’ de ‘Hello World’.

E ela queria fazer isso para centenas de células de uma vez.

Uma vez que há nenhuma funcionalidade embutida no Excel que pode fazer isso, eu criei uma macro simples que usa a função Excel VBA InStr (você verá como fazer isso no Exemplo 4 neste tutorial).

Mas primeiro, vamos ver como funciona a função Excel VBA InStr!

Este tutorial cobre:

Função Excel VBA InStr

Neste tutorial, vou explicar o uso da função InStr no Excel VBA e ver alguns exemplos práticos onde ela pode ser usada.

Função InStr do Excel VBA – Introdução

Descobertas da função InStr a posição de uma substring especificada dentro da string e retorna a primeira posição de sua ocorrência.

Por exemplo, se você deseja encontrar a posição de ‘x’ em ‘Excel’, usando a função Excel VBA InStr retornaria 2.

Sintaxe da função InStr

  • – (argumento opcional) este é um valor inteiro que diz à função InStr a posição inicial da qual ela deve começar a procurar. Por exemplo, se eu quiser que a pesquisa comece do início, irei inserir o valor como 1. Se eu quiser que comece com o terceiro caractere em diante, usarei 3. Se omitido, o valor padrão 1 será usado.
  • String1 – Esta é a string principal (ou string pai) em que você deseja pesquisar. Por exemplo, se você está procurando a posição de x no Excel, String 1 seria “Excel”.
  • String2 – Esta é a substring que você está procurando. Por exemplo, se você estiver procurando a posição de x no Excel, String2 seria x.
  • – (argumento opcional) Você pode especificar um dos três valores a seguir para o argumento:
    • vbBinaryCompare – Isso faria um caractere por comparação de caracteres. Por exemplo, se você estiver procurando por ‘x’ em ‘Excel’, ele retornará 2, mas se você estiver procurando por ‘X’ em ‘Excel’, ele retornará 0 porque X está no topo caso. Você também pode usar 0 em vez de vbBinaryCompare. Se o argumento for omitido, será considerado como padrão.
    • vbTextCompare – Isso faria uma comparação textual. Por exemplo, se você procurar por ‘x’ ou ‘X’ no Excel, ele retornaria 2 em ambos os casos. Este argumento ignora a caixa das letras. Você também pode usar 1 em vez de vbTextCompare.
    • vbDatabaseCompare – É usado apenas para o Microsoft Access. usa a informação em o banco de dados para realizar a comparação. Você também pode usar 2 em vez de vbDatabaseCompare.

Notas adicionais sobre a função InStr VBA do Excel:

  • InStr é um VBA função e não uma função de planilha. Isso significa que você não pode usá-lo dentro da planilha.
  • Se String2 (que é a substring cuja posição você está procurando) estiver vazio, a função retornará o valor do argumento.
  • Se a função InStr não pudesse encontrar a substring dentro da string principal, ela retornaria 0.

Agora, vamos dar uma olhada em alguns exemplos de uso da função InStr VBA do Excel

Exemplo 1 – Encontrando a posição desde o início

Neste exemplo, usarei a função InStr para encontrar a posição de ‘V’ em ‘Excel VBA’ desde o início.

O código para isso seria:

Sub FindFromBeginning()Dim Position As IntegerPosition = InStr(1, "Excel VBA", "V", vbBinaryCompare)MsgBox PositionEnd Sub

Quando você executar este código, ele mostrará uma caixa de mensagem com o valor 7, que é a posição de ‘V’ na string ‘Excel VBA’.

Exemplo 2 – Encontrando a posição desde o início da segunda palavra

Suponha que eu queira encontrar a posição de ‘o’ na frase – ‘A rápida raposa marrom pula sobre o cachorro preguiçoso’

No entanto, eu quero que a pesquisa comece com a segunda palavra em diante.

Neste caso, precisamos mudar o argumento para ter certeza de que especifica a posição de onde a segunda palavra começa.

Aqui está o código que fará isso:

Sub FindFromSecondWord()Dim Position As IntegerPosition = InStr(4, "The quick brown fox jumps over the lazy dog", "the", vbBinaryCompare)MsgBox PositionEnd Sub

Este código mostrará a caixa de mensagem com o valor 32, pois especificamos a posição inicial como 4. Portanto, ele ignora o primeiro ‘ O ‘e encontra o segundo’ o ‘na frase.

Se quiser torná-lo mais dinâmico, você pode aprimorar o código para que ele ignore automaticamente a primeira palavra.

Aqui está o código aprimorado que fará isso:

Sub FindFromSecondWord()Dim StartingPosition As IntegerDim Position As IntegerStartingPosition = InStr(1, "The quick brown fox jumps over the lazy dog", " ", vbBinaryCompare)Position = InStr(StartingPosition, "The quick brown fox jumps over the lazy dog", "the", vbBinaryCompare)MsgBox PositionEnd Sub

Este código primeiro encontra a posição de um caractere de espaço e o armazena na variável StartingPosition.

Ele então usa essa variável como a posição inicial para procurar a palavra ‘o’.

Portanto, ele retorna 32 (que é a posição inicial de ‘o’ após a primeira palavra).

Exemplo 3 – Encontrando a posição de @ no endereço de e-mail

Você pode criar facilmente uma função personalizada para encontrar a posição de @ em um endereço de e-mail usando a função Excel VBA InStr.

Aqui está o código para criar a função personalizada:

Agora você pode usar esta função personalizada como qualquer outra função de planilha. Receberá uma referência de célula como entrada e fornecerá a posição de @ nela.

Da mesma forma, você pode criar um função personalizada para encontrar a posição de qualquer substring dentro da string principal.

Exemplo 4 – Destacando uma parte da string dentro das células

Esta é a consulta que foi feita em junho (meu leitor que também me inspirou a escrever este tutorial).

Aqui está um exemplo de dados no formato que junho me enviou:

A consulta dela era colocar os números fora do colchete em negrito.

Aqui está o código que criei que faz isso:

O código acima usa o loop For Each para percorra cada uma das células na seleção. Ele identifica a posição do caractere do colchete de abertura usando a função InStr. Em seguida, ele altera a fonte do texto antes do colchete.

Para usar este código, você precisa copiar e colar em um módulo no editor VB.

Depois de copiar e colar o código, selecione as células nas quais deseja fazer esta formatação e execute a macro (conforme mostrado abaixo).

Você também pode gostar dos seguintes tutoriais do Excel VBA:

  • Função VBA SPLIT do Excel.
  • Função VBA TRIM.
  • O guia definitivo para os loops VBA do Excel .
  • Um guia para iniciantes no uso do For Next Loop no Excel VBA.
  • Como criar e usar um suplemento do Excel.
  • Como combinar várias pastas de trabalho em uma pasta de trabalho do Excel.
  • Como contar células coloridas no Excel.
  • Exemplos úteis de macros VBA do Excel para iniciantes.
  • Como classificar dados no Excel usando VBA (Um guia passo a passo)

Leave a Reply

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *