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

时间:2016-05-25 15:32:34

标签: excel vba excel-vba

我正在努力使用Excel操作员我花了很长时间搜索我感觉好像我很接近我正在尝试编写这个If语句,如果值不是以722 *开头并且不等于PI然后执行紧跟在else之下的代码执行else语句下的代码。

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

1 个答案:

答案 0 :(得分:3)

最简单的方法是使用BeaconManager.setsManifestCheckingDisabled(true);

Left

如果要使用通配符,请使用If Not Left(CStr(Cells(r, cC),3) = "722"

Like

将它们与If Not Cells(r, cC)) Like "722*" Then 进行比较仅将=视为一个角色。

Edit2:显然我对Like的计算工作有误。喜欢似乎是更快的方法(在这种情况下),特别是如果没有匹配(懒惰的评估,我猜)。显然,在这两种情况下,总的CPU和内存使用量都很小,这取决于您的选择。

这是我发现的: *s Like "722*"

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

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

差异的大小取决于字符串长度以及是否匹配(例如Instr(1,s,"722")>0如果s Like "722*"不以s和{{{{}}开头,则非常快如果用更长的东西替换“722”,则1}}和7不会受Left的影响。