拼接功能异常:检测延迟码MT/DA时消息框无法触发
解决延迟码检测触发消息框的问题
我猜你大概率是用VBA来实现这个功能的(毕竟提到了消息框),问题核心出在通配符的匹配方式用错了——直接用等于号=是精确匹配,不会把*当成通配符处理,只有用Like操作符才能让通配符生效。
给你几个可行的单行代码方案:
方案1:精准匹配MT/DA开头的格式
If delayCode Like "MT-*" Or delayCode Like "DA-*" Then MsgBox "检测到目标延迟码!"
这里Like "MT-*"会匹配所有以MT-开头的字符串,不管后面跟着什么数字;如果严格要求后面必须是一位数字,可以把*换成#,也就是Like "MT-#"。
方案2:更紧凑的字符组匹配(可选)
如果想写得简洁些,也可以用字符组语法:
If delayCode Like "MT-#" Or delayCode Like "DA-#" Then MsgBox "检测到目标延迟码!"
这个写法严格限定了后面是一位数字,完全符合你两位字母-一位数字的格式要求。
为什么之前的代码失效?
举个反例,如果你之前写的是:
If delayCode = "MT-" & "*" Then MsgBox "触发"
这时候程序会把"MT-" & "*"当成一个精确的字符串"MT-*"去匹配,只有当延迟码完全等于这个字符串时才会触发,自然不会生效。必须用Like操作符来启用通配符的匹配逻辑。
如果你的开发环境不是VBA(比如Excel公式、其他脚本语言),可以补充说明,我再给你调整对应的代码,但核心逻辑都是一致的:要用支持通配符的匹配方法,而非精确相等判断。
内容的提问来源于stack exchange,提问作者NWTech
相关产品推荐
相关产品推荐

