Три наиболее используемые логические операторы в Excel VBA являются: And, Or и Not. Как всегда, мы будем использовать простые примеры, чтобы сделать вещи более ясно.

Логический оператор И

Поместите командную кнопку на листе и добавьте строки следующего кода:

Dim score1 As Integer, score2 As Integer, result As String

score1 = Range("A1").Value

score2 = Range("B1").Value

If score1 >= 60 And score2 > 1 Then

result = "pass"

Else

result = "fail"

End If

Range("C1").Value = result

Объяснение: если score1 больше или равно 60 и score2 больше 1, Excel VBA возвращается проход, в противном случае возвращает Excel VBA неудачу.

Результат при нажатии на кнопку управления на листе:

Excel VBA Logical Operator And

Вывод: Excel VBA возвращается не потому, что score2 не больше 1.

Логический оператор Или

Поместите командную кнопку на листе и добавьте строки следующего кода:

Dim score1 As Integer, score2 As Integer, result As String

score1 = Range("A1").Value

score2 = Range("B1").Value

If score1 >= 60 Or score2 > 1 Then

result = "pass"

Else

result = "fail"

End If

Range("C1").Value = result

Объяснение: если score1 больше или равно 60 или score2 больше 1, Excel VBA возвращается проход, в противном случае возвращает Excel VBA неудачу.

Результат при нажатии на кнопку управления на листе:

Excel VBA Logical Operator Or

Вывод: Excel VBA возвращается пройти, потому что score1 больше или равно 60.

Логический оператор Не

Поместите командную кнопку на листе и добавьте строки следующего кода:

Dim score1 As Integer, score2 As Integer, result As String

score1 = Range("A1").Value

score2 = Range("B1").Value

If score1 >= 60 And Not score2 = 1 Then

result = "pass"

Else

result = "fail"

End If

Range("C1").Value = result

Объяснение: если score1 больше или равно 60 и score2 не равен 1, Excel VBA возвращается проход, в противном случае возвращает Excel VBA неудачу.

Результат при нажатии на кнопку управления на листе:

Excel VBA Logical Operator Not

Вывод: Excel VBA возвращается не потому, что score2 равно 1.