Vba excel and or xor not

Операторы, использующиеся в 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 следующая:

  1. «Not» – логическое отрицание;
  2. «And» – логическое И;
  3. «Or» – логическое ИЛИ;
  4. «Xor» – логическое исключение;
  5. «Eqv» – логическая эквивалентность;
  6. «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:

vba logical operators and

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:

vba logical operators or

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:

vba logical operators not

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:

vba logical operators xor

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!
vba save as

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 = ЛожьКонец, еслиКонец подписки

Содержание

  1. Логические и побитовые операторы в Visual Basic
  2. Унарный логический оператор
  3. Двоичные логические операторы
  4. логические операции Short-Circuiting
  5. Short-Circuiting Trade-Offs
  6. Битовые операции
  7. Bit Operations in Excel VBA
  8. Оператор «И»
  9. Синтаксис
  10. Замечания
  11. Пример
  12. См. также
  13. Поддержка и обратная связь
  14. Оператор Xor
  15. Синтаксис
  16. Замечания
  17. Пример
  18. См. также
  19. Поддержка и обратная связь

Логические и побитовые операторы в 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
Declare Boolean variables

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.
How to use Boolean variables in VBA

Predictably, VBA returns FALSE since 50 is not greater than 115.

False

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:

Using Boolean variables with IF statements

As a result, VBA will return this message box to help you spot any project cost overrun.

Message box FALSE

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.

Type-mismatch error

Понравилась статья? Поделить с друзьями:
  • Vba excel all sheets in workbook
  • Vba excel all pdf
  • Vba excel all opened
  • Vba excel all files in folder
  • Vba excel ado примеры