【发布时间】:2016-11-29 13:44:13
【问题描述】:
我正在编写一个小宏,它将遍历工作表中的所有单元格并测试特定正则表达式的列。我写了一个简单的正则表达式来比较输入是否是字符串;如果是,那么它应该忽略它,否则它应该将单元格格式化为红色。预期的输出是内容错误的单元格应该被着色。但是,VBA 会处理每个内容并将每个不正确的条目作为正确的传递。
这是我的代码:
Dim RegEx As Object
Set RegEx = CreateObject("VBScript.RegExp")
With RegEx
.Pattern = "/^[A-Za-z]+$/"
.Global = True
.IgnoreCase = True
If .Test(cell_value) Then
Cells.Item(num_rows, num_cols).Interior.ColorIndex = RGB(255, 0, 0)
MsgBox "Error" + cell_value
Else
MsgBox "No error" + cell_value
End If
End With
即使输入不正确,它也总是返回“无错误”。有什么提示吗?
【问题讨论】:
-
首先,我不认为 VBScript RegExp 语法使用
/字符来分隔正则表达式模式。其次,在您的代码中,如果找到该模式,则 test 将为 true 并返回 Error,这似乎与您解释想要的相反。 -
@VincentG 是的,你是对的。 VB RegExp 不使用 / 字符来分隔正则表达式,是的,你得到了它。