在vbscript中你可以在if语句中使用两个可能的条件吗? (要么)

时间:2014-06-11 14:31:28

标签: if-statement vbscript ms-word docvariable

一个例子是:

If filter_purchase = 0 Or "" Then
SetDocVar "filter_purchase", "0"
Else
SetDocVar "filter_purchase", CStr(filter_purchase)
End If

但是我得到了类型不匹配'。有没有比做Else IF更简单的方法?

3 个答案:

答案 0 :(得分:2)

您必须明确说明每个OR的条件。请看下面的

If filter_purchase = 0 Or filter_purchase = "" Then
   SetDocVar "filter_purchase", "0"
Else
   SetDocVar "filter_purchase", CStr(filter_purchase)
End If

答案 1 :(得分:0)

这应该是你想要的条件

If ((filter_purchase = 0) Or (filter_purchase = "")) Then

@agamike,我相信单个=用于比较vbs,如果不是,而不是== link here

答案 2 :(得分:0)

如果您只是尝试测试未初始化的变量,那么您的If表达式实际上是多余的。 VBScript中的所有变量都是变体,所有变体都以默认值0/False/""开头。例如:

Dim v
If v = ""    Then MsgBox "Empty string"
If v = 0     Then MsgBox "Zero"
If v = False Then MsgBox "False"

所有这三项测试都将通过。请注意如何将单个变量与字符串,数字和布尔文字进行比较。未初始化的变量还没有类型,因此这些类型的比较完全正确。

但是,一旦为变量分配值,就需要在进行比较时考虑其类型。例如:

Dim v
v = ""
If v = ""    Then MsgBox "Empty String"    ' Pass.  "" = "".
If v = 0     Then MsgBox "Zero"            ' Fail! Illegal comparison.
If v = False Then MsgBox "False"           ' Fail! "" <> False.

现在变量已被定义为包含字符串,需要将其与其他字符串类型(文字或变量)或可以(隐式或显式)强制转换为字符串的值进行比较。