2015-11-26 8 views
4

У меня есть две булевы переменные, а именно «a» и «b».Цикл «For» для булевых переменных?

В общем случае существуют 4 состояния для переменных (TT, TF, FT, FF).

Я хочу видеть, как я могу автоматически изменять переменные от true до false и кода для каждого состояния.

Что-то вроде цикла «For», но для булевых переменных.

For a = True to False 

    For b = True to False 

    Next 
Next 
+2

CBool ​​(-1) = True; CBool ​​(0) = False. Разве это не так? – DanL

ответ

2

Вы просто представляют логические значения как 1 или 0, например:

Dim b1 As Byte 
Dim b2 As Byte 
Dim a As Boolean 
Dim b As Boolean 

For b1 = 0 To 1 
    For b2 = 0 To 1 
     a = CBool(b1) 
     b = CBool(b2) 
    Next 
Next 
1

Вам нужно всего лишь один цикл:

Dim a As Boolean 
Dim b As Boolean 
Dim i As Integer 

For i = 0 To 3 
    a = i And 1 
    b = i And 2 
    ... 
Next 
0

Это:

Do 
    a = CBool(Not a) 
    b = CBool(IIf(a, Not b, b)) 
Loop Until Not a And Not b 

Will произвести все 4 результата, а затем выйти

+0

Усовершенствование: нет необходимости в переменных CBool, которые уже являются булевыми :-) – DanL

+0

Я не объявлял их логическими :) Если вы берете 'CBool ​​()' out, то они выводятся как «Вариант/Интергер». Очевидно, если вы явно объявлять как 'Boolean', тогда нет необходимости. –

+0

Правда, но ваш код предполагает, что они есть. Например, вы не можете '' 'строку. – DanL

1

Это лучшее решение, которое я нашел для VBA, который поддерживает согласованность с исходным кодом:

Dim a As Boolean 'defining your Boolean Variables 
Dim b As Boolean 

For i = 1 To 0 Step -1: a = i 'this take 'a' from TRUE to FALSE 
    For j = 1 To 0 Step -1: b = j 'this take 'b' from TRUE to FALSE 

    Next j 
Next i 
Смежные вопросы