AND OR NOT XOR EQV IMP
Без логики никуда. Всё программирование это логика. В VBA-Excel так же есть свои логические операторы. Ниже приведена таблица операторов их синтаксис, описание и таблица истинности.
Теперь рассмотрим как они применяются на практике
Оператор AND
Естественно если у нас выражение логическое, то и начинаться оно может с условия Если. Вот например:
Private Sub CommandButton1_Click()
If Cells(3, 9) = 1 And Cells(3, 10) = 1 Then
Cells(3, 11) = 1
Else
Cells(3, 11) = 0
End If
End Sub
Теперь надо прояснить ситуацию. Если в ячейке Cells(3, 9) и ячейке Cells(3, 10) записана еденица, то в ячейке Cells(3, 11) так же записывается еденица, в противном случае в ячейке Cells(3, 11) прописывается ноль (в примере есть все логические примеры, можете скачать).
Но это не значит, что оно всегда должно начинаться с условия Если то. И не обязательно чтобы в выражении было два входных значения (в данном случае Cells(3, 9) = 1, Cells(3, 10)). Их модет быть столько сколько вы захотите. Например так:
Private Sub CommandButton1_Click()
If Cells(3, 9) = 1 And Cells(3, 10) = 1 And Cells(3, 11) = 1 Then
Cells(3, 12) = 1
Else
Cells(3, 12) = 0
End If
End Sub
Оператор OR
Тут всё аналогично, начинаем с Если и заканчиваем То. И также входных переменных может быть более двух.
Private Sub CommandButton2_Click()
If Cells(8, 9) = 1 Or Cells(8, 10) = 1 Then
Cells(8, 11) = 1
Else
Cells(8, 11) = 0
End If
End Sub
Оператор NOT
В случае с НЕ нам достаточно одной входной переменной для получения необходимого результата на выходе.
Private Sub CommandButton3_Click()
If Not Cells(13, 9) = 1 Then
Cells(13, 11) = 1
Else
Cells(13, 11) = 0
End If
End Sub
В этом случае у нас получается всё в точности противоположно истинне. Если в Cells(13, 9) записана еденица, то получается ноль, в противном случае - еденица (так сказать некий закон подлости).
Оператор XOR
Это что-то вроде оператора OR (или), но тут нет истинности при одинаковых значениях переменных.
Private Sub CommandButton4_Click()
If Cells(16, 9) = 1 Xor Cells(16, 10) = 1 Then
Cells(16, 11) = 1
Else
Cells(16, 11) = 0
End If
End Sub
Оператор EQV
Данный оператор так же опереирует двумя и более переменными.
Private Sub CommandButton5_Click()
If Cells(21, 9) = 1 Eqv Cells(21, 10) = 1 Then
Cells(21, 11) = 1
Else
Cells(21, 11) = 0
End If
End Sub
Но если Вы экспериментируете с несколькими переменными, то результат будет совершенно не ожиданный. Вот попробуйте. Это булева алгебра и её не обманешь :-)
Оператор IMP
Данный оператор тоже можно записать через условие Если То.
Private Sub CommandButton6_Click()
If Cells(26, 9) = 1 Imp Cells(26, 10) = 1 Then
Cells(26, 11) = 1
Else
Cells(26, 11) = 0
End If
End Sub
У кого-то может возникнуть вопрос: А можно ли эти операторы соединить в одном логическом выражении? Конечно можно.
Sub Primer()
A = 1
B = 0
C = 1
If A = 1 And B = 1 Or C = 1 Then
MsgBox "Истина 1", vbInformation, "Истина"
Else
MsgBox "Ложь 0", vbInformation, "Ложь"
End If
End Sub
< < Предыдущая глава | Следующая глава > > |