如何检查是否满足两个或两个以上条件,而只有其中一个条件成立?

时间:2018-07-28 05:43:54

标签: vbscript

我将以下脚本与软件配合使用,该软件使用OMR读取CheckBox并将数据输出到XML文件。

有没有一种方法可以更改它,即如果已选中多个框,则数据输出应该是列表中的第一个复选框?

希望这很有道理。

任何帮助将不胜感激。

Dim installer 

q_a1= Metadata.Values("OMR_FRED_P2")
q_a2= Metadata.Values("OMR_JON_P2")
q_a3= Metadata.Values("OMR_MATT_P2")
q_a4= Metadata.Values("OMR_STEVE_P2") 

If q_a1 = "Filled" Then
  installer = "Fred"
End If
If q_a2 = "Filled" then
  installer = "Jon"
End If
If q_a3 = "Filled" then
  installer = "Matt"
End If
If q_a4 = "Filled" then
  installer = "Steve"
End If

call Metadata.SetValues("CompleteBy",installer)

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

Dim a1Checked, a2Checked, a3Checked, a4Checked
Dim numberOfChecked

a1Checked = (q_a1 = "Filled")
a2Checked = (q_a2 = "Filled")
a3Checked = (q_a3 = "Filled")
a4Checked = (q_a4 = "Filled")

numberOfChecked = Abs(a1Checked + a2Checked + a3Checked + a4Checked)

If a1Checked Or numberOfChecked > 1 Then
    installer = "Fred"
ElseIf a2Checked Then
    installer = "Jon"
ElseIf a3Checked Then
    installer = "Matt"
ElseIf a4Checked Then
    installer = "Steve"
Else
    ' Decide what you want to do if none is checked.
End If

Call Metadata.SetValues("CompleteBy", installer)

在VBScript中,“布尔真”值的数字值为-1,而假值则为0

上面的代码只是将值加在一起。如果满足两个条件,则总和为-2,然后我们使用Abs函数来获取抽象值(即返回2而不是-2)。之后,您可以使用numberofChecked > 1轻松检查是否满足两个或多个条件。