我尝试在 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 中使用正则表达式了解更多信息。