为什么input给定错误时,vba总是返回无错误?

我正在写一个小的macros,它将遍历工作表中的所有单元格,并为特定的正则expression式testing列。 我写了一个简单的正则expression式来比较input是否是string; 如果是的话就应该忽略它,否则应该把单元格格式化为红色。 预期的输出是错误内容的单元格应该被着色。 但是,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 

即使input错误,它总是返回“无错误”。 任何提示?

你知道,在你的例子中,每个单元格模式都会被标记为错误,对吗? 更具体的说,如果你的例子中的.Pattern = "A" ,每个单元格都带有字母A或者a (感谢IgnoreCase = True )会被标记为错误,而不是rest。

如果这是你的意图,那么你的模式肯定是错误的。 你发布的脚本对我来说工作得很好。

你可以用条件格式(即没有代码)

作为一个例子,这个条件格式只有在string包含AZ时才返回TRUE

A是65
B是90

因此,testing是通过比较这些testing的总和与string的长度来确定每个字符的值是否在64和90之间。

 =SUMPRODUCT(--((CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))>64)), --(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<91))=LEN(A1) 

2004年我又写了一个问题,像Barry Houdini这样的人可能会有更好的解决scheme,使用Xl2013和xl2016中的新function。