Рубрикатор
|
Логические операторы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
|
Поиск
|
||