VBA中“like”运算符中的空格字符

时间:2017-04-12 11:59:33

标签: vba

我正在尝试使用like函数来区分以2或3个数字后跟更多空白字符开头的单元格(白色空格字符除外),但似乎无法识别后者。例如,对于两个单元格,一个包含

  

11一些文字

和另一个包含

  

111一些文字

我一直试图写一个if语句,对于第一个而不是第二个是真的。我试过了

if cells(i,1) like "*##[ ]*" then

if cells(i,1) like "*##\s*" then

if cells(i,1) like "*##[^#]*" then

以下有关使用各种来源的正则表达式的信息(前两个我试图识别2个数字后跟一个空格字符,第三个2个数字后跟一个非数字)。

它是for循环的一部分,并且如上例所示,唯一的数字位于字符串的开头,而不是有时是空格字符。在第一个代码示例中,if语句对于2和3数字都是真的,对于第二个和第三个数字,对于两个都不是。鉴于我所读到的有关正则表达式等函数的内容,我不明白这一点。

我非常感谢指导。我希望这个相对简单,所以我确定我错过了一些明显的东西,如果是这样的话,我会道歉。

2 个答案:

答案 0 :(得分:7)

VBA之类的运营商并不支持RegEx。相反,它有自己的格式。空格使用文字值进行匹配,不需要转义。

Input               Op      Pattern     Result
"11 Some Text"      LIKE    "## *"      True
"11Some Text"       LIKE    "## *"      False  

有关详情,请参阅Microsoft's documentation

如果您更愿意使用RegEx,请查看此answer。 @PortlandRunner已经花时间制作了一本很棒的指南,包括很多例子。

答案 1 :(得分:1)

我仔细阅读了此MSDN网站上的资料,这似乎对我有用。

If Cells(i, 1).Value Like "## *" Then
    Debug.Print ("Match")
ElseIf Cells(i, 1).Value Like "### *" Then
    Debug.Print ("Match")
End If