【问题标题】:If statement condition error - returns true for all conditions [duplicate]如果语句条件错误 - 对所有条件返回 true [重复]
【发布时间】: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

【问题讨论】:

  • 如果DocNumDouble,使用数学,而不是字符串比较(即Fix(DocNum / (10 ^ 5)))。对于每个Or 子句,您还需要一个完整表达式。这个现在做的基本是CBool("1004*"),就是类型不匹配。
  • 链接的重复解决了问题的If DocNum = "abc" Or DocNum = "xyz"If DocNum = "abc" Or "xyz" 部分。请注意,= 运算符是 equality 运算符:此操作不支持通配符。如果需要通配符,请查看 Like 运算符。

标签: excel vba


【解决方案1】:

试过这个解决了:

If DocNum = "1003*" Or _
   DocNum = "1004*" Or _
   DocNum = "1005*" Then
 'Some Code
ElseIf
   DocNum = "19*" Or _
   DocNum = "17*" Or _
   DocNum = "22*" Or _
   DocNum = "20*" Then
 'Some Code

或者

Select Case DocNum
   Case "1003*","1004*","1005*"
   'Some Code
   Case "19*","17*","22*","20*"
   'Some Code
   Case Else
   'Some Code Case None
End Select

【讨论】:

    猜你喜欢
    • 2013-12-17
    • 2016-09-03
    • 1970-01-01
    • 2021-05-10
    • 2014-02-18
    • 1970-01-01
    • 1970-01-01
    • 2020-09-23
    • 2019-05-27
    相关资源
    最近更新 更多