为什么不能在 VBA 中的 Cells.Find 中使用数字通配符?

为什么不能在 VBA 中的 Cells.Find 中使用数字通配符?

我尝试在 Excel 工作表中搜索任何单元格,其中的值以数字开头,后跟句点,但不起作用。有人知道为什么吗?

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

答案1

我尝试在 Excel 工作表中搜索任何具有以数字开头后跟句点的值的单元格,但这不起作用。

有谁知道为什么不行吗?

句点.在正则表达式中具有特殊含义,表示“匹配任意单个字符”。

如果要匹配文字句点,.则需要转义特殊含义。\用作转义字符(例如"\.""\\")。

因此,您的表达应该"[0-9]\."与文字句点相匹配.

要匹配后跟句点的多个数字,请使用"[0-9]+\."(+来匹配前面的表达式一次或多次)。

VBA RegEx:如何评估和使用“正则表达式”了解更多信息。

笔记:据我所知cells.find()不支持正则表达式。

您需要使用该RegExp课程。

正则表达式 (RegExp) 是一个提供极其强大的文本解析功能的类,特别是允许用户在较大的文本条目中查找(甚至替换)符合特定模式的子字符串。本文提供了有关 RegExp 的 VBScript 实现的基本信息,以及如何使用它在 Visual Basic 6 (VB6) 和 Visual Basic for Applications (VBA) 项目中获得强大的文本解析功能。只要了解一些规则并发挥一些想象力,您就可以构建极其灵活和/或复杂的模式。

...

通过将这些函数添加到您的 VB6/VBA 项目中,您可以快速轻松地将 RegExp 功能合并到您的应用程序中。 如果您是 Microsoft Office 用户,您甚至可以在 Microsoft Excel 的工作表公式中使用这些函数或在 Microsoft Access 中的查询中。

来源在 Visual Basic for Applications 和 Visual Basic 6 中使用正则表达式了解更多信息。

相关内容