Excel VBA逻辑运算符不是通配符*

我正在努力与Excel运算符我花了一段时间search我感觉好像我是接近我试图编码这个If语句,如果值不以722 *开始,并不等于PI然后执行代码下面马上否则在else语句下执行代码。

If Not CStr(Cells(r, cC)) = "722*" And Not CStr(Cells(r, cS)) = "PI" Then 

最简单的方法是使用Left

 If Not Left(CStr(Cells(r, cC),3) = "722" 

如果你想使用通配符,使用Like

 If Not Cells(r, cC)) Like "722*" Then 

比较他们=对待*只是作为一个字符。

Edit2:显然我错了Like的计算工作。 喜欢似乎是更快的方法(在这种情况下),特别是如果没有匹配(懒惰评估我猜)。 很显然,在这两种情况下,总的CPU和内存使用量都非常小,以至于您可以select哪一种。

这是我发现的: s Like "722*"Left(s,3) = "722"

s Like "*722"Right(s,3) = "722"

s Like "*722*"Instr(1,s,"722")>0

差异的大小取决于string的长度以及是否匹配(例如, s Like "722*"非常快,如果s不以7开头, LeftRight不会像Like你用更长的东西代替“722”)