如果value = true,则在VBA中追加1 else 0

时间:2011-02-21 01:50:29

标签: vba

我不确定这是否可行,但我想我会问,看看是否有人有任何明智的解决方案。

我正在创建一个VBA表单,人们将使用它来组装一个SQL字符串:“勾选此框以使此参数成为真正的”。

实现这一目标的显而易见的方法是

If Checkbox.Value Then
    string = string + "@parameter = 1, "
Else
    string = string + "@parameter = 0, "
End If

令人烦恼的是,这有点冗长。如果我可以做这样的事情会很好:

string = string + "@parameter = " + Checkbox.value + ", "

但我不确定这是否可行。有可能吗?

3 个答案:

答案 0 :(得分:8)

您是否考虑过使用IIf

string = string + "@parameter = " + IIf(Checkbox.value, "1", "0") + ", "

您可以详细了解该功能here

答案 1 :(得分:3)

在VBA中,True为-1,False为0,与Excel本身不同(True为1)。

string = string + "@parameter = " & CLng(Abs(Checkbox.Value)) & ", "

将False转换为零,将True转换为正值。 Abs可能会将其转换为数字,因此CLng可能过度杀伤。但我恳求可读性。

答案 2 :(得分:0)

更短的解决方案是:

string = string + "@parameter = " & -1 * Checkbox.Value & ", "