Операторы, использующиеся в VBA Excel для отрицания и сравнения логических выражений. Синтаксис, принимаемые значения, приоритет логических операторов.
Оператор «Not»
«Not» – это оператор логического отрицания (инверсия), который возвращает True, если условие является ложным, и, наоборот, возвращает False, если условие является истинным.
Синтаксис:
Таблица значений:
Условие | Результат |
---|---|
True | False |
False | True |
Оператор «And»
«And» – это оператор логического умножения (логическое И, конъюнкция), который возвращает значение True, если оба условия являются истинными.
Синтаксис:
Результат = Условие1 And Условие2 |
Таблица значений:
Условие1 | Условие2 | Результат |
---|---|---|
True | True | True |
True | False | False |
False | True | False |
False | False | False |
Оператор «Or»
«Or» – это оператор логического сложения (логическое ИЛИ, дизъюнкция), который возвращает значение True, если одно из двух условий является истинным, или оба условия являются истинными.
Синтаксис:
Результат = Условие1 Or Условие2 |
Таблица значений:
Условие1 | Условие2 | Результат |
---|---|---|
True | True | True |
True | False | True |
False | True | True |
False | False | False |
Оператор «Xor»
«Xor» – это оператор логического исключения (исключающая дизъюнкция), который возвращает значение True, если только одно из двух условий является истинным.
Синтаксис:
Результат = Условие1 Xor Условие2 |
Таблица значений:
Условие1 | Условие2 | Результат |
---|---|---|
True | True | False |
True | False | True |
False | True | True |
False | False | False |
Оператор «Eqv»
«Eqv» – это оператор логической эквивалентности (тождество, равенство), который возвращает True, если оба условия имеют одинаковое значение.
Синтаксис:
Результат = Условие1 Eqv Условие2 |
Таблица значений:
Условие1 | Условие2 | Результат |
---|---|---|
True | True | True |
True | False | False |
False | True | False |
False | False | True |
Оператор «Imp»
«Imp» – это оператор логической импликации, который возвращает значение False, если первое (левое) условие является истинным, а второе (правое) условие является ложным, в остальных случаях возвращает True.
Синтаксис:
Результат = Условие1 Imp Условие2 |
Таблица значений:
Условие1 | Условие2 | Результат |
---|---|---|
True | True | True |
True | False | False |
False | True | True |
False | False | True |
Приоритет логических операторов
Приоритет определяет очередность выполнения операторов в одном выражении. Очередность выполнения логических операторов в VBA Excel следующая:
- «Not» – логическое отрицание;
- «And» – логическое И;
- «Or» – логическое ИЛИ;
- «Xor» – логическое исключение;
- «Eqv» – логическая эквивалентность;
- «Imp» – логическая импликация.
In this Article
- Using the And Logical Operator
- Using the Or Logical Operator
- Using the Not Logical Operator
- Using the Xor Logical Operator
- Is Operator
- Like Operator
VBA allows you to use the logical operators And, Or, Not, Xor to compare values. The operators are considered “Boolean”, which means they return True or False as a result.
If you want to learn how to compare strings, click here: VBA Compare Strings – StrComp
If you want to learn how to use comparison operators, click here: VBA Comparison Operators – Not Equal to & More
Using the And Logical Operator
The And logical operator compares two or more conditions. If all the conditions are true, the operator will return True. If at least one of the conditions is not true, the operator will return False. Here is an example:
Dim intA As Integer
Dim intB As Integer
Dim blnResult As Boolean
intA = 5
intB = 5
If intA = 5 And intB = 5 Then
blnResult = True
Else
blnResult = False
End If
In this example, we want to check if both intA and intB are equal to 5. If this is true, the value of Boolean blnResult will be True, otherwise, it will be False.
First, we set values of intA and intB to 5:
intA = 5
intB = 5
After that, we use the And operator in the If statement to check if the values are equal to 5:
If intA = 5 And intB = 5 Then
blnResult = True
Else
blnResult = False
End If
As both variables are equal to 5, the blnResult returns True:
Image 1. Using the And logical operator in VBA
Using the Or Logical Operator
The Or logical operator compares two or more conditions. If at least one of the conditions is true, it will return True. If none of the conditions are true, the operator will return False. Here is the code for the example:
Dim intA As Integer
Dim intB As Integer
Dim blnResult As Boolean
intA = 5
intB = 10
If intA = 5 Or intB = 5 Then
blnResult = True
Else
blnResult = False
End If
In this example, we want to check if both intA is equal to 5. or intB is equal to 10. If any of these conditions is true, the value of Boolean blnResult will be True, otherwise, it will be False.
First, we set the value of intA to 5 and intB to 10:
intA = 5
intB = 10
After that, we use the Or operator in the If statement to check if any of the values is equal to 5:
If intA = 5 Or intB = 5 Then
blnResult = True
Else
blnResult = False
End If
As intA value is 5, the blnResult returns True:
Image 2. Using the Or logical operator in VBA
Using the Not Logical Operator
The Not logical operator checks one or more conditions. If the conditions are true, the operator returns False. Otherwise, it returns True. Here is the code for the example:
Dim intA As Integer
Dim blnResult As Boolean
intA = 5
If Not (intA = 6) Then
blnResult = True
Else
blnResult = False
End If
In this example, we want to check if the value of intA is not equal to 6. If intA is different than 6, the value of Boolean blnResult will be True, otherwise, it will be False.
First, we set the value of intA to 5:
intA = 5
After that, we use the Not operator in the If statement to check if the value of intA is different than 6:
If Not (intA = 6) Then
blnResult = True
Else
blnResult = False
End If
As intA value is 5, the blnResult returns True:
Image 3. Using the Not logical operator in VBA
Using the Xor Logical Operator
The Xor logical operator compares two or more conditions. If exactly one of the conditions is true, it will return True. If none of the conditions are true, or more than one are true, it will return False. Here is the code for the example:
Dim intA As Integer
Dim intB As Integer
Dim blnResult As Boolean
intA = 5
intB = 10
If intA = 5 Xor intB = 5 Then
blnResult = True
Else
blnResult = False
End If
In this example, we want to check if exactly one of the values (intA or IntB) are equal to 5. If only one condition is true, the value of Boolean blnResult will be True, otherwise, it will be False.
First, we set the value of intA to 5 and intB to 10:
intA = 5
intB = 10
After that, we use the Or operator in the If statement to check if any of the values is equal to 5:
If intA = 5 Xor intB = 5 Then
blnResult = True
Else
blnResult = False
End If
As intA value is 5 and intB is 10, the blnResult returns True:
Image 4. Using the Xor logical operator in VBA
Is Operator
The Is Operator tests if two object variables store the same object.
Let’s look at an example. Here we will assign two worksheets to worksheet objects rng1 and rng2, testing if the two worksheet objects store the same worksheet:
Sub CompareObjects()
Dim ws1 As Worksheet, ws2 As Worksheet
Set ws1 = Sheets("Sheet1")
Set ws2 = Sheets("Sheet2")
If ws1 Is ws2 Then
MsgBox "Same WS"
Else
MsgBox "Different WSs"
End If
End Sub
Of course the worksheet objects are not the same, so “Different WSs” is returned.
Like Operator
The Like Operator can compare two strings for inexact matches. This example will test if a string starts with “Mr.”
Sub LikeDemo()
Dim strName As String
Dim blnResult As Boolean
strName = "Mr. Michael James"
If strName Like "Mr*" Then
blnResult = True
Else
blnResult = False
End If
End Sub
VBA Coding Made Easy
Stop searching for VBA code online. Learn more about AutoMacro — A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!
Learn More!
Содержание
- Использование логического оператора And
- Использование логического оператора Or
- Использование нелогического оператора
- Использование логического оператора Xor
- Оператор
- Оператор Like
VBA позволяет использовать логические операторы А также, Или, Нет, Xor для сравнения значений. Операторы считаются «логическими», что означает, что в результате они возвращают True или False.
Если вы хотите узнать, как сравнивать строки, щелкните здесь: VBA Compare Strings — StrComp
Если вы хотите узнать, как использовать операторы сравнения, щелкните здесь: Операторы сравнения VBA — не равно и др.
В А также Логический оператор сравнивает два или более условий. Если все условия верны, оператор вернет True. Если хотя бы одно из условий не выполняется, оператор вернет False. Вот пример:
123456789101112 | Dim intA как целое числоDim intB как целое числоDim blnResult As BooleanintA = 5intB = 5Если intA = 5 и intB = 5 ТогдаblnResult = TrueЕщеblnResult = ЛожьКонец, если |
В этом примере мы хотим проверить, что оба intA а также intB равны 5. Если это правда, значение Boolean blnResult будет True, в противном случае — False.
Сначала мы устанавливаем значения intA а также intB к 5:
После этого воспользуемся А также в операторе If, чтобы проверить, равны ли значения 5:
12345 | Если intA = 5 и intB = 5 ТогдаblnResult = TrueЕщеblnResult = ЛожьКонец, если |
Поскольку обе переменные равны 5, blnResult возвращает True:
Изображение 1. Использование логического оператора And в VBA
Использование логического оператора Or
В Или Логический оператор сравнивает два или более условий. Если хотя бы одно из условий истинно, оно вернет True. Если ни одно из условий не выполняется, оператор вернет False. Вот код для примера:
123456789101112 | Dim intA как целое числоDim intB как целое числоDim blnResult As BooleanintA = 5intB = 10Если intA = 5 или intB = 5 ТогдаblnResult = TrueЕщеblnResult = ЛожьКонец, если |
В этом примере мы хотим проверить, что оба intA равно 5. или intB равно 10. Если любое из этих условий истинно, значение Boolean blnResult будет True, в противном случае — False.
Сначала мы устанавливаем значение intA до 5 и intB до 10:
После этого воспользуемся Или в операторе If, чтобы проверить, равно ли какое-либо из значений 5:
12345 | Если intA = 5 или intB = 5 ТогдаblnResult = TrueЕщеblnResult = ЛожьКонец, если |
В качестве intA значение 5, blnResult возвращает True:
Изображение 2. Использование логического оператора Or в VBA
Использование нелогического оператора
В Нет Логический оператор проверяет одно или несколько условий. Если условия верны, оператор возвращает False. В противном случае возвращается True. Вот код для примера:
12345678910 | Dim intA как целое числоDim blnResult As BooleanintA = 5Если не (intA = 6), тоblnResult = TrueЕщеblnResult = ЛожьКонец, если |
В этом примере мы хотим проверить, имеет ли значение intA не равно 6. Если intA отличается от 6, значение Boolean blnResult будет True, в противном случае — False.
Сначала мы устанавливаем значение intA к 5:
После этого мы используем оператор Not в операторе If, чтобы проверить, отличается ли значение intA от 6:
12345 | Если не (intA = 6), тоblnResult = TrueЕщеblnResult = ЛожьКонец, если |
В качестве intA значение 5, blnResult возвращает True:
Изображение 3. Использование оператора Not logic в VBA
Использование логического оператора Xor
В Xor Логический оператор сравнивает два или более условий. Если выполняется ровно одно из условий, возвращается True. Если ни одно из условий не выполняется или выполняется несколько условий, возвращается значение False. Вот код для примера:
123456789101112 | Dim intA как целое числоDim intB как целое числоDim blnResult As BooleanintA = 5intB = 10Если intA = 5 Xor intB = 5 ТогдаblnResult = TrueЕщеblnResult = ЛожьКонец, если |
В этом примере мы хотим проверить, равно ли ровно одно из значений (intA или IntB) 5. Если истинно только одно условие, значение Boolean blnResult будет True, в противном случае — False.
Сначала мы устанавливаем значение intA до 5 и intB до 10:
После этого воспользуемся Или в операторе If, чтобы проверить, равно ли какое-либо из значений 5:
12345 | Если intA = 5 Xor intB = 5 ТогдаblnResult = TrueЕщеblnResult = ЛожьКонец, если |
В качестве intA значение 5 и intB 10, blnResult возвращает True:
Изображение 4. Использование логического оператора Xor в VBA
Оператор
Оператор Is проверяет, хранят ли две объектные переменные один и тот же объект.
Давайте посмотрим на пример. Здесь мы назначим два рабочих листа объектам рабочего листа rng1 и rng2, проверяя, хранят ли два объекта рабочего листа один и тот же рабочий лист:
12345678910111213 | Sub CompareObjects ()Dim ws1 как рабочий лист, ws2 как рабочий листУстановить ws1 = Sheets («Sheet1»)Установить ws2 = Sheets («Sheet2»)Если ws1 Is ws2, тоMsgBox «Тот же WS»ЕщеMsgBox «Различные WS»Конец, еслиКонец подписки |
Конечно, объекты рабочего листа не совпадают, поэтому возвращается «Различные WS».
Оператор Like
Оператор Like может сравнивать две строки на предмет неточных совпадений. В этом примере проверяется, начинается ли строка с «Мистер».
1234567891011121314 | Sub LikeDemo ()Dim strName As StringDim blnResult As BooleanstrName = «Мистер Майкл Джеймс»Если strName Like «Mr *» ТогдаblnResult = TrueЕщеblnResult = ЛожьКонец, еслиКонец подписки |
Содержание
- Логические и побитовые операторы в Visual Basic
- Унарный логический оператор
- Двоичные логические операторы
- логические операции Short-Circuiting
- Short-Circuiting Trade-Offs
- Битовые операции
- Bit Operations in Excel VBA
- Оператор «И»
- Синтаксис
- Замечания
- Пример
- См. также
- Поддержка и обратная связь
- Оператор Xor
- Синтаксис
- Замечания
- Пример
- См. также
- Поддержка и обратная связь
Логические и побитовые операторы в Visual Basic
Логические операторы сравнивают Boolean выражения и возвращают Boolean результат. Операторы And , Or , AndAlso , OrElse и Xor являются двоичными , так как они принимают два операнда, а Not оператор является унарным , так как он принимает один операнд. Некоторые из этих операторов также могут выполнять побитовые логические операции с целочисленными значениями.
Унарный логический оператор
Оператор Not выполняет логическое отрицание Boolean выражения. Он дает логическую противоположность своего операнда. Если выражение имеет True значение , то Not возвращает False значение ; если выражение имеет False значение , то Not возвращает значение True . Это показано в следующем примере.
Двоичные логические операторы
Оператор And выполняет логическое соединение с двумя Boolean выражениями. Если оба выражения имеют значение True , возвращается And True значение . Если хотя бы одно из выражений имеет False значение , то And возвращается False значение .
Оператор Or выполняет логическую дезинъюнкцию или включение двух Boolean выражений. Если любое из выражений имеет True значение , или оба выражения имеют значение True , то Or возвращается значение True . Если ни то или иное выражение не имеет True значения , Or возвращает значение False .
Оператор Xor выполняет логическое исключение для двух Boolean выражений. Если только одно выражение имеет True значение , но не оба, Xor возвращается True значение . Если оба выражения имеют значение True или оба имеют значение False , Xor возвращает значение False .
В следующем примере показаны операторы And , Or и Xor .
логические операции Short-Circuiting
Оператор AndAlso очень похож на And оператор , в том, что он также выполняет логическое соединение с двумя Boolean выражениями. Ключевое различие между ними заключается в том, что AndAlso проявляет короткое замыкание . Если первое выражение в AndAlso выражении имеет False значение , то второе выражение не вычисляется, так как оно не может изменить конечный результат и AndAlso возвращает . False
Аналогичным образом оператор OrElse выполняет укорочение логического дизъюнкции для двух Boolean выражений. Если первое выражение в OrElse выражении имеет True значение , то второе выражение не вычисляется, так как оно не может изменить конечный результат и OrElse возвращает . True
Short-Circuiting Trade-Offs
Сокращение может повысить производительность, не оценивая выражение, которое не может изменить результат логической операции. Однако если это выражение выполняет дополнительные действия, сокращение пропускает эти действия. Например, если выражение включает вызов Function процедуры, эта процедура не вызывается, если выражение сокращено, а любой дополнительный Function код, содержащийся в , не выполняется. Таким образом, функция может выполняться только изредка и может быть проверена неправильно. Или логика программы может зависеть от кода в Function .
В следующем примере показана разница между And , Or и их аналогами с коротким замыканием.
Обратите внимание, что в предыдущем примере некоторый важный код внутри checkIfValid() не выполняется при кратковременном вызове. Первый If оператор вызывает checkIfValid() , хотя 12 > 45 возвращает False , так как And не укорочивает. Второй If оператор не вызывает checkIfValid() , так как, когда 12 > 45 возвращает False , AndAlso укорочает второе выражение. Третий If оператор вызывает checkIfValid() , хотя 12 возвращает True , так как Or не укорочивает. Четвертый If оператор не вызывает checkIfValid() , так как, когда 12 возвращает True , OrElse укорочает второе выражение.
Битовые операции
Побитовые операции вычисляют два целочисленных значения в двоичной форме (основание 2). Они сравнивают биты в соответствующих позициях, а затем присваивают значения на основе сравнения. В следующем примере показан And оператор .
В предыдущем примере задается значение x 1. Это происходит по следующим причинам:
Значения обрабатываются как двоичные:
3 в двоичной форме = 011
5 в двоичной форме = 101
Оператор And сравнивает двоичные представления, одну двоичную позицию (бит) за раз. Если оба бита в заданной позиции имеют значение 1, то 1 помещается в эту позицию в результате. Если любой из битов равен 0, то 0 помещается в эту позицию в результате. В предыдущем примере это работает следующим образом:
011 (3 в двоичной форме)
101 (5 в двоичной форме)
001 (результат в двоичной форме)
Результат обрабатывается как десятичный. Значение 001 является двоичным представлением 1, поэтому x = 1.
Побитовая Or операция аналогична, за исключением того, что биту результата присваивается значение 1, если один или оба сравниваемых бита равны 1. Xor присваивает 1 результирующему биту, если точно один из сравниваемых битов (не оба) равен 1. Not принимает один операнд и инвертирует все биты, включая бит знака, и присваивает это значение результату. Это означает, Not что для подписанных положительных чисел всегда возвращает отрицательное значение, а для отрицательных Not чисел всегда возвращает положительное или нулевое значение.
Операторы AndAlso и OrElse не поддерживают побитовые операции.
Побитовые операции можно выполнять только с целочисленными типами. Значения с плавающей запятой должны быть преобразованы в целочисленные типы, прежде чем можно будет продолжить побитовую операцию.
Источник
Bit Operations in Excel VBA
Each bit has value 0 or 1, all data is stored as a series of bits. Bits are grouped together to form bytes (8 bits) and larger data elements:
- Byte – 8 bits grouped into 1 byte
- Integer – 16 bits (2 bytes)
- Long – 32 bits (4 bytes)
For example, let’s convert the binary number 11010001 to decimal. We need the powers of 2 from 0 (right bit) to 7 (left bit): 2 0 = 1, 2 1 = 2, 2 2 = 4, … 2 7 = 128. So the example, binary number 110100012 is equal to:
110100012 = 128*1 + 64*1 + 32*0 + 16*1 + 8*0 + 4*0 + 2*0 + 1*1 = 209
The AND, OR, XOR and NOT operators are bit operations, they work on individual bits in a number. Except for NOT (inverse) bit operators require 2 arguments also called operands.
Bit Operation OR
Bitwise operator OR check if either the right operand or the left operand is true, or if they are both true. In other words, operation OR returns 1 in all cases except where the corresponding bits of both operands are zero.
Bit 0 | Bit 1 | OR |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
Bit Operation AND
Bitwise operator AND check if either the right operand and the left operand is true. In other words, operation AND returns zero in all cases except where the corresponding bits of both operands are 1.
Bit 0 | Bit 1 | AND |
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
Bit Operation XOR
Bitwise operator XOR (or exclusive OR) sets the bit to 1 if the two bits are different, and 0 if they are the same.
Bit 0 | Bit 1 | XOR |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
Bit Operation NOT
Bitwise operator NOT only takes a single argument and simply reverses all bits, changing all the ones to zeros and zeros to ones.
Источник
Оператор «И»
Используется для установления логической связи между двумя выражениями.
Синтаксис
Результат = expression1Иexpression2
Синтаксис оператора And состоит из таких частей:
Part | Описание |
---|---|
result | Обязательный элемент; любая числовая переменная. |
выражение1 | Обязательный элемент, любое допустимое выражение. |
выражение2 | Обязательный элемент, любое допустимое выражение. |
Замечания
Если оба выражения будут оценены как True, result будет иметь значение True. Если любое из выражений имеет значение False, результат — False. В таблице ниже показано, как определяется значение result:
Если expression1 равняется | И expression2 равняется | result представляет собой |
---|---|---|
True | False | False |
True | Null | Null |
False | True | False |
False | False | False |
False | Null | False |
Null | True | Null |
Null | False | False |
Null | Null | Null |
Оператор And также выполняет побитовое сравнение аналогично расположенных битов двух числовых выражений и помещает соответствующий бит в result согласно этой таблице:
Если бит в expression1 равняется | И бит в expression2 равняется | result представляет собой |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
Пример
В примере показано, как оператор And логически соединяет два выражения.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Источник
Оператор Xor
Используется для выполнения логического исключения для двух выражений.
Синтаксис
[ result = ] expression1Xorexpression2
Синтаксис оператора Xor содержит следующие элементы:
Part | Описание |
---|---|
result | Необязательный элемент; любая числовая переменная. |
выражение1 | Обязательный элемент, любое допустимое выражение. |
выражение2 | Обязательный элемент, любое допустимое выражение. |
Замечания
Если только одно из выражений имеет значение True, результат имеет значение True. Однако, если любое из выражений имеет нулевое значение, результат также будет иметь нулевое значение.
Если ни один из выражений не имеет значения NULL, результат определяется в соответствии со следующей таблицей.
Если expression1 равняется | И expression2 равняется | То результат равняется |
---|---|---|
True | True | False |
True | False | True |
False | True | True |
False | False | False |
Оператор Xor выполняет функции как логического, так и битового оператора. Побитовое сравнение двух выражений, использующих исключающее или логику для формирования результата, показано в следующей таблице.
Если бит в expression1 равняется | И бит в expression2 равняется | То результат равняется |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
Пример
В этом примере оператор Xor используется для выполнения логического исключения для двух выражений.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Источник
VBA Boolean data type can only be either TRUE or FALSE – expressed either as “1” (TRUE) or “0” (FALSE).
Boolean values are commonly used with IF statements to verify whether a given condition is met or not, allowing you to build complex logical comparisons.
A blank canvas in the VBA editor is waiting for us, so let’s get started.
Declaring Boolean Variables
First things first, let’s start with declaring Boolean variables so that you can use them in your VBA code.
There are two ways to declare a Boolean variable:
- on the module level, meaning the variable can only be used within a given module
- on the global level, meaning the variable can be used across the entire VBA project
Use the following Dim statement to create a Boolean value on the module level:
Dim BooleanValue As Boolean
On the other hand, copy this public statement to create a global Boolean variable:
Public BooleanValue As Boolean
Example #1: Using Boolean Variables
Let’s move from theory to practice.
The examples below demonstrate how to use the Boolean data type in VBA.
Start with creating a new module (Insert > Module). Once there, copy the following code into the VBA editor and click “Run Sub/UserForm” or press F5 to execute it:
Sub Boolean_Vba()
Dim BooleanValue As Boolean
BooleanValue = 50 > 115
MsgBox BooleanValue
End Sub
This simple Sub procedure compares whether 50 is greater than 115 and returns a message box with the corresponding Boolean value based on this simple logical comparison.
Let’s take a closer look at the VBA code to help you adjust accordingly:
- Dim BooleanValue As Boolean – This line of code creates a new variable named “BooleanValue” and converts it to the Boolean data type.
- BooleanValue = 50 > 115 – This determines the actual Boolean value of the variable based on the specified logical comparison. If 50 is greater than 115, the value is set to TRUE. If not, the value is set to FALSE.
- MsgBox BooleanValue – This VBA command creates a message box containing the output.
Predictably, VBA returns FALSE since 50 is not greater than 115.
Related Article: How to Change The Position And Size Of Excel Charts In VBA
Example #2: Boolean Variables & IF Statements
That was a simple example, so let’s ramp up the difficulty level and break down how you can use the VBA Boolean data type with IF statements.
Imagine you’re overseeing a web development project where the devs are getting paid based on their hourly rate. Your fictitious company allocated 54 hours to the project.
Armed with this data (and the knowledge of how to apply Boolean values), you can put together a simple IF statement to check if the project runs over budget at any stage of the development process:
Sub Boolean_Vba()
Dim HoursTracked As Integer
Dim HoursPlanned As Integer
Dim Result As Boolean
HoursTracked = 13
HoursPlanned = 54
If HoursTracked > HoursPlanned Then
Result = True
Else
Result = False
End If
MsgBox "Project cost overrun: " & Result
End Sub
The screenshot below breaks down the building blocks of this Sub procedure in greater detail:
As a result, VBA will return this message box to help you spot any project cost overrun.
Boolean Operators
In VBA, Boolean operators make it possible for you to work with combinations of Boolean variables, providing you a lot more flexibility.
The four most common Boolean operators in VBA are AND, OR, NOT, and XOR. In this section, we will show you how to use each of them.
The AND Operator
The AND operator connects two or more Boolean expressions and returns TRUE only if all of the conditions are met.
In the example below, the variable “Result” equals TRUE only if both the first condition (50 > 155) and the second condition (50 < 55) are TRUE.
Sub Boolean_Vba()
Dim Result As Boolean
Result = 50 > 155 And 50 < 55 // Use the AND operator to check if both of the conditions are met
MsgBox Result
End Sub
Result: FALSE
The OR Operator
The OR operator returns TRUE if at least one of the conditions is met.
In the same example, the variable “Result” equals TRUE if either the first or second condition is TRUE.
Sub Boolean_Vba()
Dim Result As Boolean
Result = 50 > 155 Or 50 < 55 // Use the OR operator to check if any of the conditions are met
MsgBox Result
End Sub
Result: TRUE
The NOT Operator
The NOT operator turns TRUE into FALSE, and vice versa.
In this example, since 50 is not greater than 155, the VBA editor should return FALSE. However, since the NOT operator is applied, it takes truth to falsity. Another variation is the not-equal-to operator (<>) that works in a similar way.
Sub Boolean_Vba()
Dim Result As Boolean
Result = Not 50 > 155 // Use the NOT operator to reverse the TRUE and FALSE values
MsgBox Result
End Sub
Result: TRUE
The XOR Operator
The XOR operator returns TRUE only if two conditions are not TRUE or FALSE at the same time.
In the example below, the “Result” variable is TRUE because the first condition (50 > 155) is FALSE while the second condition (50 < 55) is TRUE.
Sub Boolean_Vba()
Dim Result As Boolean
Result = 50 > 155 Xor 50 < 55 // Check if BOTH or NEITHER of the conditions are met
MsgBox Result
End Sub
Result: TRUE
Usage Notes
1. The default Boolean value is FALSE.
Sub Boolean_Vba()
Dim Result As Boolean
MsgBox Result
End Sub
Result: FALSE
2. By default, every nonzero number is TRUE.
Sub Boolean_Vba()
Dim Result As Boolean
Result = 15
MsgBox Result
End Sub
Result: TRUE
3. Zero is equal to FALSE.
Sub Boolean_Vba()
Result = 0
MsgBox Result
End Sub
Result: TRUE
4. Boolean values can’t be anything but TRUE or FALSE. If you try to turn a Boolean variable into any other data type, this breaks the code and triggers an error.
Sub Boolean_Vba()
Dim Result As Boolean
Result = “Bird is the word”
MsgBox Result
End Sub
Result: a type-mismatch error – as shown on the screenshot below.