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]*” 不能以数字开头 |
[] 空内容 |
字面量 [] |
要匹配 [ 这个符号需要用 “[” |
经典例子(直接上手用)
检查是否邮箱格式(超级常用)
If mail Like "*@*.*" Then
MsgBox "大概是个邮箱"
End If
当然,Like 不是专业正则,不适合做特别严谨的验证。
判断是否数字(纯数字字符串)
If text Like "#*" Then
MsgBox "是数字串"
End If
但注意这种方式只判断第一位是否数字,如需全数字:
If text Like String(Len(text), "#") Then
MsgBox "全是数字"
End If
判断是否以特定字符开头
If name Like "A*" Then
MsgBox "名字以 A 开头"
End If
判断长度为 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