在 VBA 中,表达式 (internalDataName Like String(Len(internalDataName), "#"))
是一种简洁的纯数字验证方法,其原理如下:
分步解析
String(Len(internalDataName), "#")
- 作用:生成一个与
internalDataName
长度相同的字符串,但所有字符均为#
。 - 示例:
- 若
internalDataName = "123"
→ 生成"###"
- 若
internalDataName = "45A"
→ 生成"###"
(长度相同,但内容无关)
- 若
- 作用:生成一个与
Like
运算符- 作用:进行模式匹配,
#
在Like
中代表任意单个数字(0-9)。 - 规则:
"123" Like "###"
→True
(每个字符均为数字)"12A" Like "###"
→False
(第三个字符非数字)
- 作用:进行模式匹配,
- 整体逻辑
- 将
internalDataName
与等长的#
字符串比较:- 若所有字符均为数字 → 返回
True
- 若存在非数字字符 → 返回
False
- 若所有字符均为数字 → 返回
- 将
关键特性
- 动态长度适配:无需手动指定长度,自动匹配输入字符串长度。
- 严格性:仅允许
0-9
,拒绝空格、符号(如-
、.
)或字母。 - 效率:对于短字符串性能优异,长字符串可能需优化(但通常足够)。
示例验证
internalDataName | 生成模式 | 结果 | 说明 |
---|---|---|---|
"123" | "###" | True | 全部为数字 |
"45A" | "###" | False | 包含字母 A |
"7890" | "####" | True | 全部为数字 |
"" (空字符串) | "" | True | 需额外检查空值 |
注意事项
- 空字符串处理:
- 若
internalDataName
为空,String
生成空字符串,Like
返回True
。 - 需额外检查
Len(internalDataName) > 0
,避免误判空值为合法数字。
- 若