Excel VBA Like 通配符

0
17

Like 是 VBA 里用来模式匹配(pattern matching)的运算符,用来判断某个字符串是不是符合一套“通配符规则”。

If "Hello" Like "H*" Then
    MsgBox "匹配成功!"
End If

Like 返回 True / False

⭐ 常用通配符总表(一定要收藏)

通配符作用示例
?匹配任意单个字符“A?” 可匹配 “AB”、”A1”
*匹配任意长度字符(含空)“A*” 匹配 “A”、”Apple”
#匹配任意数字(0–9)“##” 匹配 “03”、”58″
[abc]匹配集合里任意一个字符“h[ae]llo” 匹配 hello / hallo
[a-z]匹配范围字符“[A-Z]??” 匹配 “Cat” 这样的 3 字符串(首字母大写)
!取反(不匹配后面字符)“[!0-9]*” 不能以数字开头
[] 空内容字面量 []要匹配 [ 这个符号需要用 “[[]”

🔥 经典例子(直接上手用)

1️⃣ 检查是否邮箱格式(超级常用)

If mail Like "*@*.*" Then
    MsgBox "大概是个邮箱"
End If

当然,Like 不是专业正则,不适合做特别严谨的验证。


2️⃣ 判断是否数字(纯数字字符串)

If text Like "#*" Then
    MsgBox "是数字串"
End If

但注意这种方式只判断第一位是否数字,如需全数字:

If text Like String(Len(text), "#") Then
    MsgBox "全是数字"
End If

3️⃣ 判断是否以特定字符开头

If name Like "A*" Then
    MsgBox "名字以 A 开头"
End If

4️⃣ 判断长度为 3 的大写字母串

If code Like "[A-Z][A-Z][A-Z]" Then
    MsgBox "是三位大写字母"
End If

Like vs 通配符

别搞混:

Excel 函数里的通配符:*?

VBA Like 的通配符:* ? # [abc] [a-z] [!...]

⚠ 它们不是完全一套语法!

例如:

目的Excel公式VBA Like
开头是 A"A*""A*"
第 2 字符必须是数字❌ 不支持"A#*"
3 位全大写字母❌ 不支持"[A-Z][A-Z][A-Z]"

🍭 小技巧:Like 配合 Select Case

比 if 写起来优雅很多!

Select Case text
    Case "A*"
        MsgBox "A 开头"
    Case "*B"
        MsgBox "B 结尾"
    Case "[0-9]*"
        MsgBox "以数字开头"
    Case Else
        MsgBox "不匹配任何规则"
End Select

发布回复

请输入评论!
请输入你的名字