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

来源:互联网 发布:新津知艺术馆 编辑:程序博客网 时间:2024/05/18 04:56

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


好,有点累了,休息!

阅读全文
0 0