A little trip down Boolean lane. When you are checking a Boolean value: Dim Cond1 As Boolean To check if the Boolean is True: If Cond1 Then That's it. No = True or = True = True To check if the Boolean is False: If Not Cond1 Then sure, If Cond1 = True Then is fine, but it's a little redundant. The If statement has to check False = True, which is False if Cond1 is False and True = True, which is True if Cond1 is True. Short Circuit Boolean Evaluation in VB. What is Short Circuit Boolean Evaluation? If you had an If statement like this: If R >= 0 And Boxes(R) = 1 Then a short circuit evaluation of this condition (R >= 0 And Boxes(R) = 1) would first evaluate R >= 0. Iff this R >= 0 is true, then Boxes(R) = 1 will be evaluated. In other words, Boxes(R) = 1 is not evaluated if R < 0... which is useful, since elements less than 0 probably don't exist in an array anyway. To do a Short circuit evaluation 'And': If R >= 0 Then If Boxes(R) = 1 Then To do a Short circuit evaluation 'Or' (where the second condition is checked only if the first condition is False) on a statement like If R = 0 Or S = R Then becomes: cond1 = False If R = 0 Then cond1 = True ElseIf S = R Then cond1 = True End If If cond1 Then Substantially more messy, but it works. It'd probably be simpler to convert the Or expression into an And expression. Inverting Your Variable Checks Not (A = B) <=> A <> B Not (A < B) <=> A >= B Not (A > B) <=> A <= B Not (A <= B) <=> A > B Not (A >= B) <=> A < B Not (A <> B) <=> A = B Not (A Is B) does not invert, and there is no keyword yet in VB that does the opposite. A IsNot B does not exist. There's also no But logical operator. P.S. (May 20 2004 112:12) The IsNot keyword has been added to VB.NET 2005