Логічний тип змінної
Логічний тип даних VBA використовується для зберігання значень True або False. Істина також може бути представлена 1, а помилка - 0.
Для оголошення булевої змінної використовуйте оператор Dim (скорочення від Dimension):
1 | Розмити blnA як булеве |
Потім, щоб призначити змінній значення, ви просто використовуєте знак рівності:
1 | blnA = Правда |
Якщо ви помістите це в процедуру, це може виглядати так:
123456789101112 | Sub blnExample ()'оголосити булеву зміннуРозмити blnA як булеве'запустіть код для заповнення змінної - зазвичай це код оператора if або caseЯкщо Діапазон ("A1")> 0, тоblnA = істинаІнакшеblnA = НеправдаЗакінчити Якщо'показати вікно повідомленьMsgBox "Тест, щоб перевірити, чи має значення комірка більше 0", & blnAEnd Sub |
Якщо ви запустите код вище, відобразиться таке вікно повідомлення.
Оголошення булевої змінної на модульному або глобальному рівні
У попередньому прикладі ми оголосили Булеве змінна в процедурі. Змінні, оголошені процедурою, можна використовувати лише в рамках цієї процедури.
Замість цього ви можете оголосити булеві змінні на модульному або глобальному рівні.
Рівень модуля
Ви заявляєте Рівень модуля змінні у верхній частині модулів коду з Dim заяву.
Ці змінні можна використовувати з будь -якою процедурою в цьому модулі коду.
Глобальний рівень
Ви також декларуєте Глобальний рівень змінні у верхній частині модулів коду. Однак замість використання Dim , ви б використовували Громадські заяву про те, що Булеве Змінна доступна для використання у вашому проекті VBA.
1 | Публічна blnA як булева |
Якби ви оголосили Булеве змінної на рівні модуля, а потім спробуйте використати її в іншому модулі, ви отримаєте помилку.
Однак, якщо б ви використовували ключове слово Public для оголошення Булеве змінної, помилка не відбудеться, і процедура працюватиме ідеально.
Використання булевої змінної
Ви використовуєте булеву змінну для логічного порівняння. Вони часто використовуються з операторами If для перевірки того, чи є умова True або False згідно з наведеним вище прикладом, або у рядку коду для застосування логічного тесту - можливо, щоб побачити, чи одне значення більше іншого.
12345678 | Sub blnExample ()'оголосити булеву зміннуDim blnA Як булеве'перевірити, чи одне число більше наступногоblnA = 45> 68'показати вікно повідомленьMsgBox blnAEnd Sub |
Якщо ви запустите код вище, ви отримаєте таке вікно повідомлення.
тому що, звичайно, 45 не більше 68!
Використання логічних операторів
Оскільки в логічному порівнянні використовуються булеві змінні, ми можемо використовувати логічні оператори AND та OR для перевірки, чи є істиною чи хибністю кілька умов.
За допомогою оператора AND
Ми можемо скористатися функцією AND, щоб перевірити, чи виконуються обидві умови.
12345678 | Sub blnExample ()'оголосити булеву зміннуDim blnA Як булеве'Використовуйте оператор AND, щоб перевірити, чи відповідають обидві умовиblnA = 10> 13 і 15> 12'показати вікно повідомленьMsgBox blnAEnd Sub |
або ми можемо запустити той самий тест за допомогою оператора If:
123456789101112 | Sub blnExample ()'оголосити булеву зміннуDim blnA Як булеве'Використовуйте оператор AND, щоб перевірити, чи відповідають обидві умовиЯкщо 10> 13 і 15> 12 ТодіblnA = ПравдаІнакшеblnA = НеправдаЗакінчити Якщо'показати вікно повідомленьMsgBox blnAEnd Sub |
Обидва наведені вище приклади повернуться ПОМИЛКОВИЙ через те, що 10 є НІ більше 13 - і ОБЕ умови повинні бути істинними, щоб логічне значення було істинним.
За допомогою оператора OR
Ми можемо використовувати функцію АБО, щоб перевірити, чи виконується ОДНА з умов.
12345678 | Sub blnExample ()'оголосити булеву зміннуDim blnA Як булеве'Використовуйте оператор AND, щоб перевірити, чи відповідають обидві умовиblnA = 10> 13 Або 15> 12'показати вікно повідомленьMsgBox blnAEnd Sub |
або ми можемо запустити той самий тест за допомогою оператора If:
123456789101112 | Sub blnExample ()'оголосити булеву зміннуDim blnA Як булеве'Використовуйте оператор AND, щоб перевірити, чи відповідають обидві умовиЯкщо 10> 13 АБО 15> 12 ТодіblnA = ПравдаІнакшеblnA = НеправдаЗакінчити Якщо'показати вікно повідомленьMsgBox blnAEnd Sub |
Ці приклади повернуться ПРАВДА у зв'язку з тим, що 10 НЕ більше 13, а 15 - більше 12 - іТІЛЬКИ ОДИН умова має бути істинною, щоб логічне значення було істинним.
Використання операторів If дозволяє нам використовувати більше логічних операторів
Використання оператора NOT
Ми також можемо використовувати оператор NOT з булевою змінною. Оператор NOT заперечує значення умови - тому, якщо умова істинна, оператор NOT поверне false.
12345678910111213141516 | Sub FindDifferences ()'оголошуйте змінні діапазонуDim rng1 As RangeDim rng2 As Range'активувати аркуш першийРобочі аркуші ("Аркуш1"). Активуйте'заповнити діапазониВстановити rng1 = Діапазон ("A3")Встановити rng2 = Діапазон ("B3")'Використовуйте оператор NOT, щоб побачити, чи рівні значення чи ні.Якщо не rng1.Value = rng2.Value ТодіMsgBox "Значення в осередках не рівні"ІнакшеMsgBox "Значення в осередках рівні"Закінчити ЯкщоEnd Sub |
Використання логічного оператора Xor
TheXor логічний оператор використовується для порівняння двох або більше умов. Якщо одна з умов відповідає дійсності, вона поверне ІСТИНУ. Якщо є 2 умови, а НІТЬМО не відповідає дійсності або ОБІ є істинними, воно поверне НЕВІРНО.
1234567891011121314151617 | Sub blnExample ()'оголосити цілі числаDim intA як ціле числоDim intB як ціле число'оголосити булеву зміннуDim blnРезультат Булево'заповніть змінніintA = 5intB = 10'Перевірте, чи правдаЯкщо intA = 5 Xor intB = 5 ТодіblnResult = ПравдаІнакшеblnResult = НеправдаЗакінчити ЯкщоMsgBox blnResultEnd Sub |
У наведеному вище прикладі, оскільки ОДНА з умов - ІСТИНА, вікно повідомлення повернеться ПРАВДА.
1234567891011121314151617 | Sub blnExample ()'оголосити цілі числаDim intA як ціле числоDim intB як ціле число'оголосити булеву зміннуDim bln Результат Як логічний'заповнити змінніintA = 5intB = 5'Перевірте, чи правдаЯкщо intA = 5 Xor intB = 5 ТодіblnResult = ПравдаІнакшеblnResult = НеправдаЗакінчити ЯкщоMsgBox blnResultEnd Sub |
Однак у наведеному вище прикладі, оскільки обидві умови відповідають дійсності, вікно повідомлення повернеться ПОМИЛКОВИЙ.
1234567891011121314151617 | Sub blnExample ()'оголосити цілі числаDim intA як ціле числоDim intB як ціле число'оголосити булеву зміннуDim blnРезультат Булево'заповнити змінніintA = 6intB = 8'Перевірте, чи правдаЯкщо intA = 5 Xor intB = 5 ТодіblnResult = ПравдаІнакшеblnResult = НеправдаЗакінчити ЯкщоMsgBox blnResultEnd Sub |
і нарешті, оскільки обидві умови НЕВІРНІ, вікно повідомлення також поверне НЕВІРНО.