【发布时间】:2019-02-20 21:47:45
【问题描述】:
DocNum 设置为 Double,我有一些数字,当它们落入这些存储桶时应该触发不同的代码来使用。我无法确定为什么它只使用 if stmt 而不是 elseif。 stmt 每次都返回 true...
示例:1003xxxxx 应返回 true 并使用 if stmt 代码,1900xxxxx 应返回 false 并使用 elseif 代码。但是 1900xxxxxx 使用的是 if stmt 代码...
这很可能是通配符,但我假设它需要先满足前面的数字,然后再假设剩余的数字。
If DocNum = "1003*" Or "1004*" Or "1005*" Then
'Some Code
ElseIf DocNum = "19*" Or "17*" Or "22*" Or "20*" Then
'Some Code
【问题讨论】:
-
如果
DocNum是Double,使用数学,而不是字符串比较(即Fix(DocNum / (10 ^ 5)))。对于每个Or子句,您还需要一个完整表达式。这个现在做的基本是CBool("1004*"),就是类型不匹配。 -
链接的重复解决了问题的
If DocNum = "abc" Or DocNum = "xyz"与If DocNum = "abc" Or "xyz"部分。请注意,=运算符是 equality 运算符:此操作不支持通配符。如果需要通配符,请查看Like运算符。