Если значение = true, тогда добавьте 1 или 0 в VBA - PullRequest
1 голос
/ 21 февраля 2011

Я не уверен, что это возможно, но я решил спросить и посмотреть, есть ли у кого-нибудь яркие решения.

Я создаю форму VBA, которую люди будут использовать для сборки SQLstring: «Отметьте этот флажок, чтобы этот параметр был истинным».

Очевидный способ реализовать это будет

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

Раздражает то, что это довольно многословно.Было бы хорошо, если бы я мог сделать что-то вроде этого:

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

Но я не уверен, возможно ли это.Возможно ли это?

Ответы [ 3 ]

8 голосов
/ 21 февраля 2011

Рассматривали ли вы использование IIf?

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

Подробнее о функции можно узнать здесь .

3 голосов
/ 21 февраля 2011

В VBA True равен -1, а False равен 0, что отличается от собственно Excel (True равно 1).

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

Это приведет к преобразованию False в ноль и True в положительное значение.Abs, вероятно, преобразует его в число, поэтому CLng может быть излишним.Но я прошу читабельности.

0 голосов
/ 11 мая 2016

Еще более коротким решением будет:

string = string + "@parameter = " & -1 * Checkbox.Value & ", "
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...