如何在vba中用like运算符进行字符串的模糊匹配?

在编写vba代码的解决方案时,会经常碰到字符串的对比。

比如要判断一个字符串变量是否包含某些字符、是否含有数字等等。

这些简单的字符串的对比都可以用vba中的内置like运算符来实现。它的语法如下:

result = string Like pattern

其中string表示要被匹配的字符串,pattern表示要匹配的模式字符串,result表示匹配的结果,如果匹配满足则返回True,反之返回False。

其中pattern可以有以下类型

匹配的模式 匹配的字符床
? 任何一个字符
* 零个或者多个字符
# 任何一个数字
[字符串列表] 任何一个在字符串列表中的字符
[!字符串列表] 任何一个不在字符串列表中的字符
[a-z] 字母a到字母z之间的任何一个字母
[A-Z] 字母A到字母Z之间的任何一个字母

其它的更多详细的资料可以访问它的官方文档Like运算符

结合以下代码将会对like运算符有更清晰的了解:

Sub QQ1722187970()
    Dim sCheck
    sCheck = "aBBBa" Like "a*a"    ' 返回 True.
    sCheck = "F" Like "[A-Z]"    ' 返回 True.
    sCheck = "F" Like "[!A-Z]"    ' 返回 False.
    sCheck = "a2a" Like "a#a"    ' 返回 True.
    sCheck = "aM5b" Like "a[L-P]#[!c-e]"    ' 返回 True.
    sCheck = "BAT123khg" Like "B?T*"    ' 返回 True.
    sCheck = "CAT123khg" Like "B?T*" ' 返回 False.
    sCheck = "我" Like "*[一-龥]*"
End Sub

 

       

发表评论