Por que não posso usar um caractere curinga de número em Cells.Find in VBA?

3

Estou tentando pesquisar minha planilha do Excel para qualquer célula que tenha um valor que comece com um número seguido por um ponto, mas isso não está funcionando. Alguém sabe por que não?

Cells.Find(What:="[0-9].", After:=ActiveCell, LookIn:=xlFormulas, _
    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False).Select
    
por Powaya 29.01.2015 / 07:02

1 resposta

1

Estou tentando pesquisar na planilha do Excel qualquer célula que tenha um valor que comece com um número seguido por um período, mas isso não está funcionando.

Does anyone know why not?

Um período . tem um significado especial em uma expressão regular, isso significa "Corresponde a qualquer caractere único".

Se você quer combinar um período literal . , você precisa escapar do significado especial. \ é usado como o caractere de escape (por exemplo "\." , "\" ).

Portanto, sua expressão deve ser "[0-9]\." para corresponder a um período literal . .

Para corresponder a mais de um dígito seguido por um período, use "[0-9]+\." ( + é usado para corresponder à expressão anterior uma ou mais vezes).

Consulte VBA RegEx: como avaliar e usar "expressões regulares" para obter mais informações.

Observação: Até onde sei, cells.find() não suporta expressões regulares.

Você precisa usar a classe RegExp .

Regular Expressions (RegExp) is a class that offers incredibly powerful text parsing capabilities, in particular allowing users to find (and even replace) substrings within larger text entries that fit a particular pattern. This article provides basic information on the VBScript implementation of RegExp, and how you can use it to gain robust text parsing capabilities in Visual Basic 6 (VB6) and Visual Basic for Applications (VBA) projects. With a little knowledge of the rules and some imagination, you can build incredibly flexible and/or complex patterns.

...

By adding these functions to your VB6/VBA projects, you can quickly and easily incorporate RegExp functionality into your applications. If you are a Microsoft Office user, you can even use these functions in worksheet formulas for Microsoft Excel or in queries in Microsoft Access.

Fonte Usando expressões regulares no Visual Basic para aplicativos e Visual Basic 6 para obter mais informações.

    
por 29.01.2015 / 09:02