Если значение = true, то добавьте 1 еще 0 в VBA

#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; ", "