Упрощение вашего логического выражения показывает, что оно всегда равно true, поэтому здесь есть проблема.
Быстрый урок по булевой алгебре:
NOT(A AND B) = NOT(A) OR NOT(B)
NOT(A OR B) = NOT(A) AND NOT(B)
Применительно к вашему выражению пишите для простоты A1 = ""
как A
и A2 = ""
как B
:
Not (A And B) Or Not (Not A And Not B)
= Not(A) Or Not(B) or Not(Not(A)) or Not(Not(B))
= Not(A) Or Not(B) or A or B
= True
Что вы имеете в виду, я думаю, что-то вроде:
Not((A and B) or (Not(A) and Not(B)))
Что может быть упрощено, но это ухудшает читабельность (то, что вы хотите проверить, становится менее очевидным).
Наконец, вы не должны писать что-то вроде этого:
If Expression
Boolean = False
а точнее:
Boolean = Not(Expression)
Предполагается, что присвоение переменной не является заполнителем для фактического кода.