¿Por qué no puedo usar un número comodín en Cells.Find in VBA?

3

Estoy intentando buscar en mi hoja de cálculo de Excel cualquier celda que tenga un valor que comience con un número seguido de un punto, pero esto no funciona. ¿Alguien sabe por qué no?

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

Respuestas:

1

Estoy intentando buscar en mi hoja de cálculo de Excel cualquier celda que tenga un valor que comience con un número seguido de un punto, pero esto no funciona.

¿Alguien sabe por qué no?

Un período . tiene un significado especial en una expresión regular, significa "Coincide con cualquier carácter individual".

Si quieres hacer coincidir un período literal . Necesitas escapar del significado especial. \ se utiliza como el carácter de escape (por ejemplo, "\.", "\\" ).

Así que tu expresión debe ser "[0-9]\." con el fin de coincidir con un período literal ..

Para hacer coincidir más de un dígito seguido de un período use "[0-9]+\." ( + se utiliza para hacer coincidir la expresión anterior una o más veces).

Ver VBA RegEx: Cómo evaluar y usar “expresiones regulares” para más información.

Nota: Hasta donde tengo entendido cells.find() No admite expresiones regulares.

Necesitas usar el RegExp clase.

Regular Expressions (RegExp) es una clase que ofrece capacidades de análisis de texto increíblemente poderosas, en particular, que permiten a los usuarios encontrar (e incluso reemplazar) subcadenas dentro de entradas de texto más grandes que se ajustan a un patrón particular. Este artículo proporciona información básica sobre la implementación VBScript de RegExp y cómo puede usarla para obtener capacidades de análisis de texto robustas en proyectos de Visual Basic 6 (VB6) y Visual Basic para aplicaciones (VBA). Con un poco de conocimiento de las reglas y algo de imaginación, puede crear patrones increíblemente flexibles y / o complejos.

...

Al agregar estas funciones a sus proyectos VB6 / VBA, puede incorporar rápida y fácilmente la funcionalidad RegExp en sus aplicaciones. Si es un usuario de Microsoft Office, incluso puede usar estas funciones en las fórmulas de la hoja de trabajo para Microsoft Excel o en consultas en Microsoft Access.

Fuente Uso de expresiones regulares en Visual Basic para aplicaciones y Visual Basic 6 para más información.

DavidPostill
fuente