VBA RegEx

O que é RegEx no Excel VBA?

RegEx significa “ Expressão Regular ” no VBA Excel e é uma sequência de caracteres que define o padrão de pesquisa para encontrar um padrão específico de caracteres em uma string de valores. Em uma palavra simples “podemos criar um padrão de expressão regular e usá-lo para pesquisar a string desse padrão”.

VBA RegEx é um modelo de objeto. Eu sei que é intimidante, olhando para a explicação, mas a questão é que a natureza do objeto. Uma coisa que você precisa lembrar aqui é que o VBA RegEx (Expressão regular) é um objeto de função de texto como nossas outras funções de texto “LEFT, RIGHT, MID”.

Como habilitar RegEx no Excel VBA?

Como eu disse ao VBA, RegEx é um modelo de objeto em VBA, assim como nosso software externo como “MS Word” e “MS PowerPoint”. Da mesma forma, RegEx também é um Component Object Model (COM) que precisamos fazer referência no editor VBA. Para habilitar RegEx, siga as etapas abaixo.

Etapa 1: vá para o Editor do Visual Basic (Alt + F11)

Etapa 2: Vá para Ferramentas e referências.

Etapa 3: Agora você verá referências ao Projeto VBA. Role para baixo e selecione “Microsoft VBScript Regular Expression 5.5”

Passo 4: Agora clique em OK. Podemos acessar esse objeto RegEx agora na codificação VBA.

Exemplo - Agora vou mostrar um exemplo simples. Suponha que você tenha as palavras “Vendas 2019, Vendas 2018 e Vendas 2017”. Se você definir o padrão como [0 - 7], ele corresponde a todos os números entre 0 e 7, portanto, nossas correspondências serão 201, 201 e 2017 em cada string.

Padrão VBA RegEx

O padrão da função VBA RegEx parece intimidante e leva algum tempo para entender o padrão. Podemos ver dois tipos de sequência de caracteres aqui, um é “Caracteres literais” e outro é “Metacaracteres”.

  • Os caracteres literais procuram a correspondência exata da string fornecida. Por exemplo, a sequência de caracteres literal “EFG” simplesmente procura todas as correspondências de “EFG” no texto fornecido.
  • Metacaracteres nada mais são do que uma combinação de caracteres com significado exato no padrão RegEx. Isso é completamente diferente dos caracteres literais. É um grande tópico a ser abordado, abaixo estão algumas das sintaxes importantes.
SintaxeDescriçãoExemploExemplo de correspondência
.Corresponde a qualquer caractere único da string de entradaptAnimal. Pote, Coloque, Padrão
[]Corresponde a qualquer caractere único entre o colchete de uma string de entrada[pt]Corresponde a p ou t
[^]Corresponde a qualquer caractere único, não entre o colchete de uma string de entrada[^ pt]Não corresponde a p ou t
[Primeiro último]Corresponde a qualquer caractere entre o intervalo fornecido no colchete[0-9]Corresponde a qualquer dígito de 0 a 9
[az]Corresponde a qualquer caractere minúsculo de a a z
[AZ]Corresponde a qualquer caractere maiúsculo de A a Z
\ sCorresponde a qualquer caractere de espaço em branco-Corresponde a espaço, nova linha ou caractere de tabulação
\ SCorresponde a qualquer caractere de espaço não branco-Os caracteres correspondentes não são Espaço, Nova Linha ou Tabulação
\ dCorresponde a qualquer caractere de um único dígitoSE 5 VG 6Jogos 5 e 6
\ DCorresponde a qualquer caractere único sem dígitosSE 5 VG 6Corresponde a SEVG

Propriedades e métodos do objeto RegEx

Como todos os nossos modelos de objeto, RegEx também tem suas próprias propriedades e métodos. Agora veremos um por um em detalhes.

Propriedades do objeto VBA Regex

  • Padrão: usado para corresponder à string fornecida.
  • Ignorar maiúsculas e minúsculas : ignora caracteres maiúsculos e minúsculos.
  • Global: Se você deseja encontrar todas as correspondências no padrão, TRUE é o argumento ou então a primeira correspondência será encontrada.
  • Multi-Line: Se você deseja encontrar novas quebras de linha, você pode usar isto.

Métodos do objeto RegEx

  • Teste: serve para testar se o padrão pode ser encontrado na string fornecida. Isso retornará TRUE se encontrado ou então FALSE.
  • Executar: Isso retornará todas as correspondências do padrão em relação à string de localização.
  • Substituir: Isso substituirá a string de pesquisa pela nova string.

Exemplo de RegEx em VBA Excel

Agora dê uma olhada no exemplo de código VBA abaixo.

Você pode baixar este modelo VBA RegEx Excel aqui - modelo VBA RegEx Excel

Código:

Sub RegEx_Example () Dim RegEx como objeto, MyString As String Set RegEx = CreateObject ("VBScript.RegExp") With RegEx .Pattern = "[0-9] +" End With MyString = "Data de nascimento ano é 1985" MsgBox RegEx .Test (MyString) MyString = "Data do ano de nascimento é ???" MsgBox RegEx.Test (MyString) End Sub

regular

No código acima, definimos o padrão para pesquisar o número de 0 a 9 da seguinte maneira.

 Com RegEx .Pattern = "[0-9] +" Terminar com 

Então a variável MyString = “Data do ano de nascimento é 1985” contém os valores de 0 a 9, então nossa caixa de mensagem retornará TRUE.

MyString = “Data de nascimento ano é ???” não tem nenhum número de 0 a 9, portanto, retornará FALSE como resultado das caixas de mensagem.