VBA ви позволява да използвате логическите оператори И, Или, Не, Xor за сравняване на стойностите. Операторите се считат за „булеви“, което означава, че в резултат връщат True или False.
Ако искате да научите как да сравнявате низове, щракнете тук: VBA Сравняване на низове - StrComp
Ако искате да научите как да използвате оператори за сравнение, щракнете тук: VBA Comparison Operators - Not Equal to & More
Използване на And Logical Operator
The И логическият оператор сравнява две или повече условия. Ако всички условия са верни, операторът ще върне True. Ако поне едно от условията не е вярно, операторът ще върне False. Ето един пример:
123456789101112 | Dim intA като цяло числоDim intB като цяло числоDim bln Резултат Като булевintA = 5intB = 5Ако intA = 5 и intB = 5 ТогаваblnResult = ВярноИначеblnResult = FalseКрай Ако |
В този пример искаме да проверим дали и двете intA и intB са равни на 5. Ако това е вярно, стойността на Boolean blnResult ще бъде вярно, в противен случай ще бъде невярно.
Първо, задаваме стойности на intA и intB до 5:
12 | intA = 5intB = 5 |
След това използваме И оператор в оператора If, за да провери дали стойностите са равни на 5:
12345 | Ако intA = 5 и intB = 5 ТогаваblnResult = ВярноИначеblnResult = FalseКрай Ако |
Тъй като и двете променливи са равни на 5, blnResult връща True:
Изображение 1. Използване на логическия оператор And във VBA
Използване на логическия оператор
The Или логическият оператор сравнява две или повече условия. Ако поне едно от условията е вярно, то ще върне True. Ако нито едно от условията не е вярно, операторът ще върне False. Ето кода за примера:
123456789101112 | Dim intA като цяло числоDim intB като цяло числоDim bln Резултат Като булевintA = 5intB = 10Ако intA = 5 или intB = 5 ТогаваblnResult = ВярноИначеblnResult = FalseКрай Ако |
В този пример искаме да проверим дали и двете intA е равно на 5. или intB е равно на 10. Ако някое от тези условия е вярно, стойността на булева blnResult ще бъде вярно, в противен случай ще бъде невярно.
Първо, задаваме стойността на intA до 5 и intB до 10:
12 | intA = 5intB = 10 |
След това използваме Или оператор в оператора If, за да провери дали някоя от стойностите е равна на 5:
12345 | Ако intA = 5 или intB = 5 ТогаваblnResult = ВярноИначеblnResult = FalseКрай Ако |
Като intA стойността е 5, blnResult връща True:
Изображение 2. Използване на логическия оператор Or във VBA
Използване на нелогичен оператор
The Не логическият оператор проверява едно или повече условия. Ако условията са верни, операторът връща False. В противен случай връща True. Ето кода за примера:
12345678910 | Dim intA като цяло числоDim bln Резултат Като булевintA = 5Ако не (intA = 6), тогаваblnResult = ВярноИначеblnResult = FalseКрай Ако |
В този пример искаме да проверим дали стойността на intA не е равно на 6. Ако intA е различна от 6, стойността на булева blnResult ще бъде вярно, в противен случай ще бъде невярно.
Първо, задаваме стойността на intA до 5:
1 | intA = 5 |
След това използваме оператора Not в израза If, за да проверим дали стойността на intA е различна от 6:
12345 | Ако не (intA = 6), тогаваblnResult = ВярноИначеblnResult = FalseКрай Ако |
Като intA стойността е 5, blnResult връща True:
Изображение 3. Използване на оператора Not logic във VBA
Използване на логическия оператор Xor
The Xor логическият оператор сравнява две или повече условия. Ако точно едно от условията е вярно, то ще върне True. Ако нито едно от условията не е вярно или повече от едно е вярно, то ще върне False. Ето кода за примера:
123456789101112 | Dim intA като цяло числоDim intB като цяло числоDim bln Резултат Като булевintA = 5intB = 10Ако intA = 5 Xor intB = 5 ТогаваblnResult = ВярноИначеblnResult = FalseКрай Ако |
В този пример искаме да проверим дали точно една от стойностите (intA или IntB) е равна на 5. Ако само едно условие е вярно, стойността на Boolean blnResult ще бъде вярно, в противен случай ще бъде невярно.
Първо, задаваме стойността на intA до 5 и intB до 10:
12 | intA = 5intB = 10 |
След това използваме Или оператор в оператора If, за да провери дали някоя от стойностите е равна на 5:
12345 | Ако intA = 5 Xor intB = 5 ТогаваblnResult = ВярноИначеblnResult = FalseКрай Ако |
Като intA стойността е 5 и intB е 10, blnResult връща True:
Изображение 4. Използване на логическия оператор Xor във VBA
Оператор ли е
Операторът Is Is тества дали две променливи на обекта съхраняват един и същ обект.
Нека разгледаме един пример. Тук ще присвоим два работни листа на обекти на работен лист rng1 и rng2, като тестваме дали двата обекта на работен лист съхраняват един и същ работен лист:
12345678910111213 | Sub CompareObjects ()Dim ws1 като работен лист, ws2 като работен листЗадайте ws1 = Листове ("Sheet1")Задайте ws2 = Листове ("Sheet2")Ако ws1 е ws2, тогаваMsgBox „Същият WS“ИначеMsgBox "Различни WSs"Край АкоEnd Sub |
Разбира се обектите на работния лист не са еднакви, така че се връща „Различни WS“.
Като оператора
Операторът на Like може да сравнява два низа за неточни съвпадения. Този пример ще тества дали низ започва с „Mr.“
1234567891011121314 | Sub LikeDemo ()Dim strName As StringDim bln Резултат Като булевstrName = "Мистър Майкъл Джеймс"Ако strName като "Mr*" ТогаваblnResult = ВярноИначеblnResult = FalseКрай АкоEnd Sub |