VBA Excel. Логические операторы
Операторы, использующиеся в VBA Excel для отрицания и сравнения логических выражений. Синтаксис, принимаемые значения, приоритет логических операторов.
1. Логические операторы в VBA Excel
1.1. Оператор «Not»
1.2. Оператор «And»
1.3. Оператор «Or»
1.4. Оператор «Xor»
1.5. Оператор «Eqv»
1.6. Оператор «Imp»
2. Приоритет логических операторов
Логические операторы в VBA Excel
Оператор «Not»
«Not» – это оператор логического отрицания (инверсия), который возвращает True, если условие является ложным, и, наоборот, возвращает False, если условие является истинным.
Синтаксис:
Результат = Not Условие |
Таблица значений:
Условие | Результат |
---|---|
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» – логическая импликация.
Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.
Логическое значение VBA — voxt.ru
Логический оператор Excel VBA
Boolean — это тип данных, а также встроенный тип данных в VBA, этот тип данных используется для логических ссылок или логических переменных, потому что значение этого типа данных имеет значение TRUE или FALSE, которое используется для логического сравнения, объявление этого тип данных аналогичен всем другим типам данных.
Как я уже сказал, логический тип данных может содержать ИСТИНА или ЛОЖЬ в качестве данных, но он также может содержать номер 1 как ИСТИНА и номер 0 как ЛОЖЬ.
Итак, TRUE представлено 1, а FALSE представлено 0. Когда мы объявляем переменную как BOOLEAN, она занимает 2 байта памяти компьютера. Вы можете свободно использовать это изображение на своем веб-сайте, в шаблонах и т. Д. Пожалуйста, предоставьте нам ссылку с указанием авторстваКак указать авторство?Ссылка на статью должна содержать гиперссылку
Например:
Источник: VBA Boolean (wallstreetmojo.com)
Работа с логическим типом данных на языке программирования VBA
Теперь давайте посмотрим на пример установки значений логического оператора для переменных. используя код VBAИспользование кода VBAКод VBA относится к набору инструкций, написанных пользователем на языке программирования приложений Visual Basic в редакторе Visual Basic (VBE) для выполнения определенной задачи.читать далее.
Вы можете скачать этот шаблон Excel для логических данных VBA здесь — Шаблон Excel для логических данных VBA
Шаг 1: Сначала запустите подпроцедуру, присвоив имя макросу.
Код:
Sub Boolean_Example1() End Sub
Шаг 2: Объявите переменную как BOOLEAN.
Код:
Sub Boolean_Example1() Dim MyResult As Boolean End Sub
Шаг 3: Теперь для переменной MyResult примените простой логический тестЛогический тестЛогический тест в Excel дает аналитический результат: истинный или ложный. Оператор равенства «=» является наиболее часто используемым логическим тестом.читать далее как 25> 20.
Код:
Sub Boolean_Example1() Dim MyResult As Boolean MyResult = 25 > 20 End Sub
Шаг 4: Теперь покажите результат в виде окно сообщения в VBAОкно сообщения в VBAФункция VBA MsgBox — это функция вывода, которая отображает обобщенное сообщение, предоставленное разработчиком. Этот оператор не имеет аргументов, и персонализированные сообщения в этой функции записываются в двойных кавычках, а для значений предоставляется ссылка на переменную.
читать далее.Код:
Sub Boolean_Example1() Dim MyResult As Boolean MyResult = 25 > 20 MsgBox MyResult End Sub
Теперь запустите макрос ExcelМакрос ExcelМакрос в Excel — это серия инструкций в виде кода, который помогает автоматизировать ручные задачи, тем самым экономя время. Excel выполняет эти инструкции пошагово для заданных данных. Например, его можно использовать для автоматизации повторяющихся задач, таких как суммирование, форматирование ячеек, копирование информации и т. Д., Тем самым быстро заменяя повторяющиеся операции несколькими щелчками мыши.
читать далее через клавишу F5 или вручную и смотрите результат.
Хорошо, мы получили результат ИСТИНА, потому что число 25 больше числа 20, поэтому логическая проверка верна, а результат ИСТИНА.
Это основная структура логических типов данных VBA.
Логический тип данных не может содержать, кроме ИСТИНА или ЛОЖЬ.
VBA Boolean — это логический тип данных; он содержит TURE или FALSE. Любое другое значение, кроме ИСТИНА или ЛОЖЬ, покажет сообщение об ошибке как «Несоответствие типа» в VBA.
Например, посмотрите на приведенный ниже код.
Код:
Sub Boolean_Example2() Dim BooleanResult As Boolean BooleanResult = "Hello" MsgBox BooleanResult End Sub
В приведенном выше коде я объявил переменную BooleanResult как Boolean.
Dim BooleanResult As Boolean
В следующей строке я присвоил объявленной переменной значение «Hello».
BooleanResult = "Hello"
Я объявил переменную как Boolean, но присвоил ей значение «Hello», которое отличается от логических значений, то есть TRUE или FALSE.
Когда я запускаю этот код с помощью клавиши F5 или вручную, я получаю ошибку несоответствия типа из-за значения несоответствия типа данных.
Все числа — ИСТИНА, а ноль — ЛОЖЬ.
Как я уже сказал, ИСТИНА представлено числом 1, а ЛОЖЬ — нулем. Например, посмотрите на приведенный ниже код в VBA.
Код:
Sub Boolean_Example3() Dim BooleanResult As Boolean BooleanResult = 1 MsgBox BooleanResult End Sub
Я присвоил переменной значение 1, и результат будет ИСТИНА.
Теперь посмотрите на приведенный ниже код.
Код:
Sub Boolean_Example3() Dim BooleanResult As Boolean BooleanResult = 0 MsgBox BooleanResult End Sub
В этом коде я присвоил переменной значение 0, и это покажет результат как ЛОЖЬ.
Не только 1 или 0 we, но и любое число, присвоенное переменной, кроме нуля, также рассматривается как ИСТИНА, и только ноль будет рассматриваться как 1.
Логический оператор VBA с условием IF
Поскольку тип данных Boolean может содержать только логические значения, он лучше всего подходит для использования с условием IF в VBA.
Код:
Sub Boolean_Example2() Dim Number1 As Integer Dim Number2 As Integer Number1 = 80 Number2 = 75 If Number1 >= Number2 Then MsgBox True Else MsgBox False End If End Sub
Таким образом, мы можем использовать логические типы данных Excel VBA для хранения результатов как ИСТИНА или ЛОЖЬ.
УЗНАТЬ БОЛЬШЕ >>
Post Views: 650
Похожие записи
Прокрутить вверхЛогические операторы VBA — OR, AND, XOR, NOT, IS и Like Оператор
VBA позволяет использовать логические операторы And , Or , Not , Xor для сравнения значений. Операторы считаются «булевыми», что означает, что в результате они возвращают True или False.
Если вы хотите узнать, как сравнивать строки, щелкните здесь: Сравнение строк VBA — StrComp
Если вы хотите узнать, как использовать операторы сравнения, щелкните здесь: Операторы сравнения VBA — Not Equal to & More
Использование Логический оператор И
Логический оператор И сравнивает два или более условий. Если все условия истинны, оператор вернет True. Если хотя бы одно из условий не выполняется, оператор вернет False. Вот пример:
Dim intA как целое число
Dim intB как целое число
Dim blnResult As Boolean
интервал = 5
интервал = 5
Если intA = 5 И intB = 5 Тогда
блнрезультат = Истина
Еще
blnResult = Ложь
End If
В этом примере мы хотим проверить, равны ли оба intA и intB 5. Если это верно, значение логического blnResult будет True, в противном случае оно будет False. .
Сначала мы устанавливаем значения intA и intB до 5:
intA = 5
intB = 5
После этого мы используем оператор И в операторе If, чтобы проверить, равны ли значения 5:
Если intA = 5 И intB = 5 Тогда
блнрезультат = Истина
Еще
blnResult = Ложь
End If
Поскольку обе переменные равны 5, blnResult возвращает True:
Изображение 1. Использование логического оператора And в VBA
Использование логического оператора Or
Логический оператор Or сравнивает два или более условий. Если хотя бы одно из условий истинно, возвращается True. Если ни одно из условий не выполняется, оператор вернет False. Вот код для примера:
Dim intA As Integer
Dim intB как целое число
Dim blnResult As Boolean
интервал = 5
интервал = 10
Если intA = 5 или intB = 5 Тогда
блнрезультат = Истина
Еще
blnResult = Ложь
Конец, если
В этом примере мы хотим проверить, равны ли оба intA 5 или intB равным 10. Если любое из этих условий истинно, значение логического blnResult будет True, в противном случае, это будет Ложь.
Сначала мы устанавливаем значение intA на 5 и intB на 10:
intA = 5
intB = 10
После этого мы используем оператор или в операторе If, чтобы проверить, равно ли какое-либо из значений 5:
Если intA = 5 или intB = 5 Тогда
блнрезультат = Истина
Еще
blnResult = Ложь
Конец, если
AS Inta Значение составляет 5, BLNRESULT Возвращает True:
Изображение 2. Использование OR LOGICAL Operator в VBA
Использование не логического оператора
7
. логический оператор проверяет одно или несколько условий. Если условия истинны, оператор возвращает False. В противном случае он возвращает True. Вот код для примера:
Dim intA как целое число
Dim blnResult As Boolean
интервал = 5
Если Нет (intA = 6), то
блнрезультат = Истина
Еще
blnResult = Ложь
End If
В этом примере мы хотим проверить, не равно ли значение intA 6. Если intA отличается от 6, значение Boolean blnResult будет True, в противном случае оно будет ЛОЖЬ.
Сначала мы устанавливаем значение intA равным 5:
intA = 5
После этого мы используем оператор Not в операторе If, чтобы проверить, отличается ли значение intA от 6:
Если Нет (intA = 6), то
блнрезультат = Истина
Еще
blnResult = Ложь
Конец, если
AS Inta Значение составляет 5, BLNRESULT Возвращает True:
Изображение 3. Использование не логического оператора в VBA
Использование xor Logical Operator
77
.Логический оператор 0038 сравнивает два или более условий. Если хотя бы одно из условий истинно, возвращается True. Если ни одно из условий не выполняется или выполняется более одного, возвращается значение False. Вот код для примера:
Dim intA As Integer
Dim intB как целое число
Dim blnResult As Boolean
интервал = 5
интервал = 10
Если intA = 5 Xor intB = 5 Тогда
блнрезультат = Истина
Еще
blnResult = Ложь
End If
В этом примере мы хотим проверить, равно ли ровно одно из значений (intA или IntB) 5. Если только одно условие истинно, значение логического значения blnResult будет True, в противном случае будет False.
Сначала мы устанавливаем значение intA на 5 и intB на 10:
intA = 5
intB = 10
После этого мы используем оператор Or в операторе If, чтобы проверить, равно ли какое-либо из значений 5:
If intA = 5 Xor intB = 5 Then
блнрезультат = Истина
Еще
blnResult = Ложь
End If
Поскольку значение intA равно 5, а intB равно 10, blnResult возвращает True:
Изображение 4. Использование логического оператора Xor в VBA
Оператор Is
Оператор Is проверяет, хранят ли две переменные объекта один и тот же объект.
Давайте рассмотрим пример. Здесь мы назначим два рабочих листа объектам рабочего листа rng1 и rng2, проверяя, хранят ли два объекта рабочего листа один и тот же рабочий лист:
Sub CompareObjects()
Dim ws1 как рабочий лист, ws2 как рабочий лист
Установить ws1 = Листы ("Лист1")
Установить ws2 = Листы ("Лист2")
Если ws1 Это ws2 Тогда
MsgBox "Тот же WS"
Еще
MsgBox "Разные WS"
Конец, если
Конец суб
Конечно, объекты рабочего листа не совпадают, поэтому возвращается «Разные WS».
Оператор Like
Оператор Like может сравнивать две строки на наличие неточных совпадений. В этом примере проверяется, начинается ли строка с «Mr.»
Подписка LikeDemo ()
Dim strName как строка
Dim blnResult As Boolean
strName = "Мистер Майкл Джеймс"
Если strName Нравится "Mr*" Тогда
блнрезультат = Истина
Еще
blnResult = Ложь
Конец, если
Конец суб
Кодирование VBA стало проще
Прекратите искать код VBA в Интернете. Узнайте больше об AutoMacro — конструкторе кода VBA, который позволяет новичкам создавать процедуры с нуля с минимальными знаниями в области кодирования и множеством функций, позволяющих сэкономить время для всех пользователей!
Узнайте больше!
Логические и побитовые операторы — Visual Basic
- Статья
- 5 минут на чтение
Логические операторы сравнивают логических
выражений и возвращают логический
результат. Операторы And
, Or
, AndAlso
, OrElse
и Xor
являются бинарными , потому что они принимают два операнда , а Not
3 потому что он принимает один операнд
Унарный логический оператор
Оператор Not выполняет логическое отрицание логического
выражения. Это дает логическую противоположность своему операнду. Если выражение оценивается как True
, то Not
возвращает False
; если выражение оценивается как False
, то Not
возвращает True
. Следующий пример иллюстрирует это.
Размер x, y Как логический х = не 23 > 14 у = не 23 > 67 ' Предыдущие операторы устанавливают x в False и y в True.
Двоичные логические операторы
Оператор И выполняет логическое соединение с двумя логическими
выражениями. Если оба выражения оцениваются как True
, то And
возвращает True
. Если хотя бы одно из выражений оценивается как False
, то And
возвращает False
.
Оператор Or выполняет логическое разъединение или включение двух логических
выражений. Если любое выражение оценивается как True
, или оба оцениваются как True
, затем Или
возвращает True
. Если ни одно из выражений не дает True
, Or
возвращает False
.
Оператор Xor выполняет логическое исключение для двух логических выражений
. Если ровно одно выражение оценивается как True
, но не оба, Xor
возвращает True
. Если оба выражения оцениваются как True
или оба оцениваются как False
, Xor
возвращает False
.
В следующем примере показаны операторы And
, Or
и Xor
.
Размер a, b, c, d, e, f, g Как логический а = 23 > 14 и 11 > 8 б = 14 > 23 А 11 > 8 ' Предыдущие операторы устанавливают a в True и b в False. с = 23 > 14 или 8 > 11 г = 23 > 67 или 8 > 11 ' Предыдущие операторы устанавливают c в True и d в False. е = 23 > 67 Xили 11 > 8 f = 23 > 14 Xили 11 > 8 g = 14 > 23 Xor 8 > 11 ' Предыдущие операторы устанавливают e в True, f в False и g в False.
Короткие логические операции
Оператор AndAlso очень похож на оператор And
тем, что он также выполняет логическое соединение двух логических выражений
. Ключевое различие между ними заключается в том, что и
также демонстрируют поведение , замыкающее . Если первое выражение в выражении AndAlso
оценивается как False
, то второе выражение не оценивается, поскольку оно не может изменить окончательный результат, и AndAlso
возвращает False
.
Аналогично, оператор OrElse выполняет логическую дизъюнктуру для двух логических выражений
. Если первое выражение в выражении OrElse
оценивается как True
, то второе выражение не оценивается, поскольку оно не может изменить окончательный результат, а OrElse
возвращает True
.
Короткое замыкание Компромиссы
Короткое замыкание может повысить производительность за счет отсутствия оценки выражения, которое не может изменить результат логической операции. Однако, если это выражение выполняет дополнительные действия, при сокращении эти действия пропускаются. Например, если выражение включает вызов Процедура функции
, эта процедура не вызывается, если выражение закорочено, и любой дополнительный код, содержащийся в Функция
, не выполняется. Таким образом, функция может запускаться только изредка и может быть протестирована неправильно. Или логика программы может зависеть от кода в функции
.
Следующий пример иллюстрирует разницу между и
, или
и их короткозамыкающими аналогами.
Количество затемнений Целое число = 12 Уменьшить максимально разрешенный как целое число = 45 Dim grandTotal как целое число
Если количество > Максимальное Разрешено И проверитьЕслиДействительно(сумма) Тогда ' Предыдущий оператор вызывает функцию checkIfValid(). Конец, если Если количество > Максимальное Разрешенное ИТакже проверьтеЕслиДействительно(сумма) Тогда ' Предыдущий оператор не вызывает функцию checkIfValid(). Конец, если Если количество < максимальное разрешенное или проверить, если допустимо (сумма), то ' Предыдущий оператор вызывает функцию checkIfValid(). Конец, если Если количество < максимальное разрешенное или иначе проверить, если допустимо (сумма), то ' Предыдущий оператор не вызывает функцию checkIfValid(). Конец, если
Функция checkIfValid(ByVal checkValue As Integer) As Boolean Если значение проверки > 15 Тогда MsgBox(CStr(checkValue) & "не является допустимым значением.") ' Предупреждение MsgBox не отображается, если вызов ' checkIfValid() является частью сокращенного выражения. Вернуть ложь Еще grandTotal += контрольное значение ' Значение grandTotal не обновляется, если вызов ' checkIfValid() является частью сокращенного выражения. Вернуть истину Конец, если Конечная функция
Обратите внимание, что в предыдущем примере некоторый важный код внутри checkIfValid()
не запускается при коротком замыкании вызова. Первый оператор If
вызывает checkIfValid()
, хотя 12 > 45
возвращает False
, потому что And
не замыкает. Второй оператор If
не вызывает checkIfValid()
, потому что когда 12 > 45
возвращает False
, AndAlso
закорачивает второе выражение. Третий оператор If
вызывает checkIfValid()
, хотя 12 < 45
возвращает True
, потому что Or
не закорачивает. Четвертый оператор If
не вызывает checkIfValid()
, потому что когда 12 < 45
возвращает True
, OrElse
замыкает второе выражение.
Побитовые операции
Побитовые операции оценивают два целых значения в двоичной форме (с основанием 2). Они сравнивают биты в соответствующих позициях, а затем присваивают значения на основе сравнения. Следующий пример иллюстрирует 9Оператор 0245 и .
Dim x As Integer х = 3 и 5
В предыдущем примере значение x
устанавливается равным 1. Это происходит по следующим причинам:
Значения обрабатываются как двоичные:
3 в двоичной форме = 011
5 в двоичной форме = 101
Оператор
и
сравнивает двоичные представления по одной двоичной позиции (биту) за раз. Если оба бита в данной позиции равны 1, то в результате в эту позицию помещается 1. Если какой-либо из битов равен 0, то 0 помещается в эту позицию в результате. В предыдущем примере это работает следующим образом:011 (3 в двоичной форме)
101 (5 в двоичной форме)
001 (Результат в двоичной форме)
Результат считается десятичным. Значение 001 представляет собой двоичное представление 1, поэтому
.x
= 1,
Побитовая операция или
аналогична, за исключением того, что 1 присваивается результирующему биту, если один или оба сравниваемых бита равны 1.