#vba
#vba
Вопрос:
Я не уверен, возможно ли это, но я решил спросить и посмотреть, есть ли у кого-нибудь какие-нибудь яркие решения.
Я создаю форму VBA, которую люди будут использовать для сборки строки SQL: «Установите этот флажок, чтобы сделать этот параметр true» что-то в этом роде.
Очевидным способом реализации этого было бы
If Checkbox.Value Then
string = string "@parameter = 1, "
Else
string = string "@parameter = 0, "
End If
Досада в том, что это довольно многословно. Было бы неплохо, если бы я мог сделать что-то вроде этого:
string = string "@parameter = " Checkbox.value ", "
Но я не уверен, что это возможно. Возможно ли это?
Комментарии:
1. true в VBA равно -1, поэтому я не думаю, что это сработает.
Ответ №1:
Рассматривали ли вы возможность использования IIf
?
string = string "@parameter = " IIf(Checkbox.value, "1", "0") ", "
Вы можете узнать больше об этой функции здесь.
Ответ №2:
В VBA значение True равно -1, а False равно 0, что отличается от значения собственно Excel (значение True равно 1).
string = string "@parameter = " amp; CLng(Abs(Checkbox.Value)) amp; ", "
Это преобразует False в ноль, а True в положительную единицу. Abs, вероятно, преобразует его в число, поэтому CLng может быть излишним. Но я настаиваю на удобочитаемости.
Ответ №3:
Еще более коротким решением было бы:
string = string "@parameter = " amp; -1 * Checkbox.Value amp; ", "