Воскресенье, 11.24.2024, 8:23 AM
Приветствую Вас Гость | RSS

Электронный учебник по VBA MS Excel 2010

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

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

< < Предыдущая глава Следующая глава > >
Поиск

Динара Илькаева © 2024
Бесплатный конструктор сайтов - uCoz