您的位置:首页 > 编程语言 > VB

Excel VBA高效办公应用-第二章-Excel VBA编辑基础-Part3(Is, Like运算符的用法详解)

2017-06-09 00:03 483 查看
1. Is运算符: 比较两个对象的引用变量是否相同,如:

Sub IsOperator()

    Dim A As Object

    Dim B As Object

    Dim C As Object

    Dim D As Object

    Dim E As Object

    Dim Check As Boolean

   

    Set A = C '指定对象引用

    Set B = C '指定对象引用

    Set E = Worksheets(1) '指定对象引用

    Set D = E

    Check = A Is B '返回True

    Debug.Print "A和B是否引用同一对象:"

    Debug.Print "A Is B:" & Check

    Check = E Is B '返回False

    Debug.Print "A和D是否引用同一对象:"

    Debug.Print "A Is D:" & Check

End Sub

------------------------------------------------------------------------------------

------------------------------------------------------------------------------------

A和B是否引用同一对象:

A Is B:True

A和D是否引用同一对象:

A Is D:False

2. Like运算符:比较两个字符串是否匹配(有点像正则表达式)(以下内容转自:http://blog.sina.com.cn/s/blog_4636489701014jtt.html)

Like运算符是字符串比较时经常使用的运算符,也是VBA较难掌握的运算符。语法:

结果 = 字符串 Like 模式

如果字符串与模式匹配,结果为True,否则为False。但是如果Like两端的字符串和模式有一个为Null,则结果为Null。

VBA内建的模式匹配功能提供了丰富的字符串比较方式,在模式表达式中可以使用通配符、字符列表(或字符区间)的任何组合来匹配字符串。

模式中的字符     与模式匹配的字符串中的字符

    ?                      任何单一字符

    *                       零个或多个字符

    #                      任何一个数字(0-9)

 [字符列表]           字符列表中的任何一个字符

[!字符列表]           不在字符列表中的任何一个字符

其它字符(串)         与自身匹配

1.Like在字符串比较时受Option Compare语句的影响,在默认情况下(Option Compare Binary),字符比较根据内部二进制表示法(ASCII码)进行,是区分大小写的,此时 "A" Like "a" 的结果为False。如果声明了Option Compare Text,则不区分大小写比较,"A" Like "a" 的结果为True。

后面的讨论假设默认情况下。

2.如果模式中没有使用通配符(?、*、#)和字符列表,此时Like运算符等价于=(等号)运算符。下面表达式的结果相同。

s Like "AB"

s = "AB"

示例代码如下(自己增加了密码校验和手机号校验示例,挺好玩!):

Sub LikeOperator()

    Dim check As Boolean

    check = "aBBBa" Like "a*a"

    Debug.Print "“aBBBa”和“a*a”是否匹配:" & check

    check = "F" Like "[A-Z]"

    Debug.Print "“F”和“[A-Z]”是否匹配:" & check

    check = "F" Like "[!A-Z]"

    Debug.Print "“F”和“![A-Z]”是否匹配:" & check

    check = "a2a" Like "a#a"

    Debug.Print "“a2a”和“a#a”是否匹配:" & check

    check = "aM5b" Like "a[L-P]#[!c-e]"

    Debug.Print "“aM5b”和“a[L-P]#[!c-e]”是否匹配:" & check

    check = "BAT123khg" Like "B?T*"

    Debug.Print "“BAT123khg”和“B?T*”是否匹配:" & check

    check = "CAT123khg" Like "B?T*"

    Debug.Print "“CAT123khg”和“B?T*”是否匹配:" & check

    check = "Hcbahid" Like "H*p*d"

    Debug.Print "“Hcbaphid”和“H*p*d”是否匹配:" & check

    check = "1391786713" Like "13#########"

    Debug.Print "“1391786713”和“13#########”是否匹配:" & check

End Sub

------------------------------------------------------------------------------------

------------------------------------------------------------------------------------

“aBBBa”和“a*a”是否匹配:True

“F”和“[A-Z]”是否匹配:True

“F”和“![A-Z]”是否匹配:False

“a2a”和“a#a”是否匹配:True

“aM5b”和“a[L-P]#[!c-e]”是否匹配:True

“BAT123khg”和“B?T*”是否匹配:True

“CAT123khg”和“B?T*”是否匹配:False

“Hcbaphid”和“H*p*d”是否匹配:False

“1391786713”和“13#########”是否匹配:False

好,有点累了,休息!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐