Vba excel не равно

Обновлено: 06.07.2024

При написании кода VBA в Excel набор встроенных операторов используют на каждом шагу. Эти операторы делятся на математические, строковые, операторы сравнения и логические. Далее мы подробно рассмотрим каждую группу операторов.

Математические операторы

Основные математические операторы VBA перечислены в таблице ниже.

В правом столбце таблицы указан приоритет операторов, принятый по умолчанию при отсутствии скобок. Добавляя в выражение скобки, можно изменять порядок выполнения операторов VBA по своему желанию.

Строковые операторы

Основной строковый оператор в Excel VBA – это оператор конкатенации & (слияние):

Операторы сравнения

Операторы сравнения используются для сравнения двух чисел или строк и возвращают логическое значение типа Boolean (True или False). Основные операторы сравнения Excel VBA перечислены в этой таблице:

Оператор Действие
= Равно
<> Не равно
< Меньше
> Больше
<= Меньше либо равно
>= Больше либо равно

Логические операторы

Логические операторы, как и операторы сравнения, возвращают логическое значение типа Boolean (True или False). Основные логические операторы Excel VBA перечислены в таблице ниже:

Оператор Действие
And Операция конъюнкции, логический оператор И. Например, выражение A And B возвратит True, если A и B оба равны True, в противном случае возвратит False.
Or Операция дизъюнкции, логический оператор ИЛИ. Например, выражение A Or B возвратит True, если A или B равны True, и возвратит False, если A и B оба равны False.
Not Операция отрицания, логический оператор НЕ. Например, выражение Not A возвратит True, если A равно False, или возвратит False, если A равно True.

В приведённой выше таблице перечислены не все логические операторы, доступные в VBA. Полный список логических операторов можно найти на сайте Visual Basic Developer Center.

Встроенные функции

В VBA доступно множество встроенных функций, которые могут быть использованы при написании кода. Ниже перечислены некоторые из наиболее часто используемых:

  • Abs(-20) возвращает значение 20;
  • Abs(20) возвращает значение 20.
  • Chr(10) возвращает перенос строки;
  • Chr(97) возвращает символ a.

Где аргумент интервал определяет тип временного интервала, добавляемого к заданной дате в количестве, указанном в аргументе число .

Аргумент интервал может принимать одно из следующих значений:

Интервал Значение
yyyy год
q квартал
m месяц
y день года
d день
w день недели
ww неделя
h час
n минута
s секунда

Примечание: Аргумент-число может быть не задан, в таком случае поиск начинается с первого символа строки, заданной во втором аргументе функции.

где строка – это исходная строка, а длина – количество возвращаемых символов, считая от начала строки.

где строка – это исходная строка, начало – позиция начала извлекаемой строки, длина – количество символов, которые требуется извлечь.

Где строка – это исходная строка, а длина – это количество символов, которые надо извлечь, считая от конца заданной строки.

  • Sqr(4) возвращает значение 2;
  • Sqr(16) возвращает значение 4.

Примечание: Для многомерных массивов в качестве необязательного аргумента может быть указано, индекс какого именно измерения нужо возвратить. Если не указано, то по умолчанию равно 1.

Данный список включает в себя только избранные наиболее часто употребляемые встроенные функции Excel Visual Basic. Исчерпывающий список функций VBA, доступных для использования в макросах Excel, можно найти на сайте Visual Basic Developer Center.

Ниже приведены операторы сравнения, определенные в Visual Basic.

Эти операторы сравнивают два выражения, чтобы определить, равны ли они, и если нет, то их отличия. Is , IsNot и Like подробно обсуждаются на отдельных страницах справки. Реляционные операторы сравнения подробно обсуждаются на этой странице.

Синтаксис

Компоненты

result
Обязательный элемент. Boolean Значение, представляющее результат сравнения.

expression1 , expression2
Обязательный. Любое выражение.

comparisonoperator
Обязательный. Любой оператор реляционного сравнения.

object1 , object2
Обязательный элемент. Имена ссылочных объектов.

string
Обязательный. Произвольное выражение String .

pattern
Обязательный. Любое String выражение или диапазон символов.

Комментарии

В следующей таблице содержится список реляционных операторов сравнения и условий, определяющих, result является ли True False .

Оператор True , если False , если
< (Меньше) expression1 < expression2 expression1 >= expression2
<= (Меньше или равно) expression1 <= expression2 expression1 > expression2
> (Больше) expression1 > expression2 expression1 <= expression2
>= (Больше или равно) expression1 >= expression2 expression1 < expression2
= (Равно) expression1 = expression2 expression1 <> expression2
<> (Не равно) expression1 <> expression2 expression1 = expression2

Оператор = также используется в качестве оператора присваивания.

Is Оператор, IsNot оператор и Like оператор имеют специальные функции сравнения, отличные от операторов в предыдущей таблице.

Сравнение чисел

При сравнении выражения типа Single с одним из типов Double Single выражение преобразуется в Double . это поведение противоположено поведению, обнаруженному в Visual Basic 6.

Аналогично, при сравнении выражения типа Decimal с выражением типа Single или Double Decimal выражение преобразуется в тип Single или Double . Для Decimal выражений любое значение дробной части меньше 1E-28 может быть потеряно. Такая утрата дробных значений может привести к тому, что два значения будут сравниваться как равные, если это не так. По этой причине следует соблюдать осторожность при использовании равенства ( = ) для сравнения двух переменных с плавающей запятой. Безопаснее проверить, является ли абсолютное значение разницы между двумя числами меньше, чем небольшая допустимая погрешность.

Точность чисел с плавающей запятой

При работе с числами с плавающей запятой следует помнить, что они не всегда имеют точное представление в памяти. Это может привести к непредвиденным результатам некоторых операций, таких как сравнение значений и оператор Mod. Дополнительные сведения см. в разделе Устранение неполадок типов данных.

Сравнение строк

При сравнении строк строковые выражения оцениваются на основе их порядка сортировки в алфавитном порядке, который зависит от Option Compare параметра.

Option Compare Binary базовые сравнения строк в порядке сортировки, производном от внутренних двоичных представлений символов. Порядок сортировки определяется кодовой страницей. В следующем примере показан типичный порядок двоичной сортировки.

A < B < E < Z < a < b < e < z < À < Ê < Ø < à < ê < ø

Option Compare Text сравнения строк при сравнении без учета регистра, порядок сортировки текста определяется языковым стандартом приложения. При задании Option Compare Text и сортировке символов в предыдущем примере применяется следующий порядок сортировки текста:

Зависимость от локали

При установке Option Compare Text результат сравнения строк может зависеть от языкового стандарта, в котором выполняется приложение. Два символа могут сравниваться как одинаковые в одном языковом стандарте, но не в другом. Если вы используете сравнение строк для принятия важных решений, например, принимаете ли вы попытку входа в систему, вы должны быть извещены о конфиденциальности языкового стандарта. Рекомендуется либо задать Option Compare Binary , либо вызвать метод StrComp , который учитывает языковой стандарт.

Программирование без типов с помощью реляционных операторов сравнения

Использование реляционных операторов сравнения с Object выражениями не допускается в Option Strict On . Если Option Strict имеет значение Off , а expression1 либо expression2 является Object выражением, типы времени выполнения определяют, как они сравниваются. В следующей таблице показано, как сравниваются выражения и результат сравнения, в зависимости от типа операндов среды выполнения.

Если операнды Сравнение:
Как String Сравнение сортировки на основе характеристик сортировки строк.
Оба числовых Объекты, преобразованные в Double , числовое сравнение.
Один числовой и один String String Преобразуется в Double и выполняется числовое сравнение. Если объект String не может быть преобразован в Double , InvalidCastException создается исключение.
Один или оба являются ссылочными типами, отличными от String Возникает исключение InvalidCastException.

Числовые сравнения обрабатываются Nothing как 0. Сравнения строк обрабатываются Nothing как "" (пустая строка).

Перегрузка

Реляционные операторы сравнения ( < . <= , > , >= , = , <> ) могут быть перегружены. Это означает, что класс или структура могут переопределять их поведение, когда операнд имеет тип этого класса или структуры. Если в коде используются какие-либо из этих операторов в таком классе или структуре, убедитесь, что вы понимаете переопределенное поведение. Для получения дополнительной информации см. Operator Procedures.

Обратите внимание, что оператор = можно перегружать только как оператор реляционного сравнения, а не как оператор присваивания.

Пример

В следующем примере показаны различные варианты использования реляционных операторов сравнения, которые используются для сравнения выражений. Реляционные операторы сравнения возвращают Boolean результат, который представляет, принимает ли указанное выражение значение True . При применении > < операторов and к строкам сравнение выполняется с использованием обычного алфавитного порядка сортировки строк. Этот порядок может зависеть от настроек языкового стандарта. Учитывается ли сортировка с учетом регистра или не зависит от параметра параметра Compare .

В предыдущем примере первое сравнение возвращает, False а оставшиеся сравнения возвращают True .

Оператор — это наименьшая способная выполняться единица кода VBA. Оператор может объявлять или определять переменную, устанавливать параметр компилятора VBA или выполнять какое-либо действие в программе.

Арифметических операторов в VBA всего 7. Четыре стандартных: сложение (+), вычитание (-), умножение (*), деление (/) и еще три:

  • возведение в степень (^), например 2^3 = 8;
  • целочисленное деление (\). Делит первое число на второе, отбрасывая (не округляя) дробную часть. Например, 5\2 = 2;
  • деление по модулю (Mod). Делит первое число на второе, возвращая только остаток от деления. Например, 5 Mod 2 = 1.

Оператор присвоения в VBA — знак равенства. Можно записывать так:

а можно еще проще:

Во втором случае не путайте знак равенства с оператором равенства.

значит "присвоить переменной nVar значение 10", а если строка выглядит так:

то это значит "если значение переменной nVar равно 10".

Если переменной нужно назначить объект, то делается это другими способами.

Операторов сравнения в VBA всего 8:

  • равенство (=), например, If (nVar = 10);
  • больше, чем и меньше, чем (> и <), например, If (nVar > 10);
  • больше или равно и меньше или равно (>= и <=), например, If (nVar >= 10);
  • не равно (<>), например, If(nVar<>10);
  • сравнение объектов (Is). Определяет, ссылаются объектные переменные на тот же объект или на разные, например, If(obj1 is obj2);
  • подобие (Like). Сравнивает строковый объект с шаблоном и определяет, подходит ли шаблон.

Операторы сравнения всегда возвращают true или false — true, если утверждение истинно, и false, если ложно.

Немного про сравнение строковых значений:

  • при сравнении строковых значений регистр учитывается;
  • пробелы в строковых значениях также учитываются;
  • при сравнении текстовых строк на больше/меньше по умолчанию сравниваются просто двоичные коды символов — какие больше или меньше. Если нужно использовать тот порядок, который идет в алфавите, то можно воспользоваться командой

Option Compare Text

Чуть подробнее про оператор Like. Общий его синтаксис выглядит как

Выражение1 Like Выражение2

При этом Выражение1 — любое текстовое выражение VBA, а Выражение2 — шаблон, который передается оператору Like. В этом шаблоне можно использовать специальные подстановочные символы (см. Табл. 3.1)

Табл. 3.1 Подстановочные символы для оператора LIKE

Любая цифра (только одна) от 0 до 9

Любое количество любых символов (включая нулевое)

Любой символ (только один)

Любой символ (только один) из приведенного списка

Любой символ (только один), кроме приведенных в списке

Очень часто при проверке нескольких условий используются логические операторы:

  • AND — логическое И, должны быть истинными оба условия;
  • OR — логическое ИЛИ, должно быть истинным хотя бы одно из условий;
  • NOT — логическое отрицание, возвращает TRUE, если условие ложно;
  • XOR — логическое исключение. В выражении E1 XOR E2 возвращает TRUE, если только E1 = TRUE или только E2 = TRUE, иначе — FALSE;
  • EQV — эквивалентность двух выражений, возвращает TRUE, если они имеют одинаковое значение;
  • IMP — импликация, возвращает FALSE, если E1 = TRUE и E2 = FALSE, иначе — TRUE.

Помнить нужно про AND, OR, NOT, остальные логические операторы используются редко.

Почти в любой программе VBA используются операторы конкатенации. В VBA их два — + или &. Рекомендуется всегда использовать &, потому что:

  • при использовании & производится автоматическое преобразование числовых значений в строковые — нет опасности допустить ошибку;
  • при использовании оператора + сложение строкового значения со значением типа Null дает Null.

Порядок применения операторов можно регулировать при помощи круглых скобок.

В этой статье мы рассмотрим основные операторы языка VBA, которые отвечают за арифметические операции, операции сравнения и присвоения, а также конкатенации.

Операторы языка VBA

Давайте приступим к небольшому теоретическому изложению.

Арифметические операторы языка VBA

Арифметических операторов VBA есть всего семь, фактически, они позволяют выполнять основные арифметические операции:

  • Сложение (+) – собственно, суммирование двух значений
  • Вычитание (-) – вычитание двух операндов, операнд – это элемент, который участвует в вычислении.
  • Умножение (*) – отвечает за умножение одного операнда на другой
  • Деление (/) – отвечает за деление одного значения на другое, в итоге можем получить как целое так и вещественное число
  • Возведение в степень (^) – данный оператор должен быть знакомым всем, кто осваивал еще в школе старый добрый Basic.
  • Целочисленное деление (\) – позволяет произвести первого операнда на другой, при этом, будет отброшена дробная часть, если она существует, не стоит путать с округлением.
  • Деление по модулю (Mod) – при делении вернет остаток от деления

Оператор присвоения языка VBA

Собственно, ничего сложно, просто знак равенства после имени переменной, после знака равенства идет присваиваемое значение, неважно, это может быть число, дата, строка и так далее.

Let MyVar=100 или, аналогично, MyVar=100

Тут мы переменной MyVar присваиваем целое число 100.

Операторы сравнения языка VBA

Данный тип операторов VBA используется при сравнении условий, например, в условном операторе.

  • Равенство (=) – проверка условия, равна ли переменная заданному значению
  • Больше (>) или меньше (<) – позволяет проверить значение переменной на предмет, больше оно или меньше заданного параметра
  • Не равно (<>) – условие типа, если переменная не равна заданному значению
  • Сравнение объектов (is) – данный оператор vba позволяет проверять переменные-объекты, переменные-объекты – переменные, которые хранят не значение, а ссылку на объект. То есть, ссылаются ли заданные переменные на заданный объект, если да, то операция вернет логическое true.
  • Подобие (Like) – позволяет произвести сравнение строкового объекта с заданным шаблоном и проверить, будет ли подходить заданный объект.

Стоит всегда помнить, что vba операторы сравнения всегда возвращают логические true (истина) или false (ложь). При произведении сравнения строк, их регистр будет учитываться, пробелы также учитываются. В процессе сравнения текстовых строк на предмет больше или меньше, происходит простое сравнивание двоичных кодов символов, который больше, а который меньше, если же надо учитывать алфавитный порядок, то используется выражение Option Compare Text .

Для оператора сравнения VBA – Like, как уже говорилось, надо прописать два выражения, первое – это тестовая строка, а второе – шаблон. Шаблон может содержать следующие подстановочные знаки:

VBA логические операторы

Логические операторы VBA позволяют проверять сразу несколько условий.

  • AND — логическое И, то есть, оба условия должны выполниться
  • OR — логическое ИЛИ, то есть, должно произойти выполнение хотя бы одного условия
  • NOT — логическое НЕ, оно вернет TRUE, если проверяемое условие является ложным
  • XOR — логическое ИСКЛЮЧАЮЩЕЕ ИЛИ, то есть, вернет true, только если один из операндов равен true, если оба равны true, то условие вернет false.
  • EQV – эквивалентность двух значений
  • IMP — импликация, вернет FALSE, если A1 = TRUE и A2 = FALSE, в противном случае, вернет TRUE.

VBA операторы конкатенации

& - данный оператор производит склейку двух строк или даже значений, при чем, числовые значения автоматически преобразуются в строки.

+ - данный оператор при сложении строки и значения Null (пустое значение) вернет Null, поэтому, для склейки предпочтительней использовать &.

Порядок применения операторов VBA следующий:

  1. арифметические
  2. конкатенации,
  3. сравнения
  4. логические

Использование круглых скобок позволяет регулировать порядок выполнения, собственно, как и в математике.

Спасибо за внимание. Автор блога Владимир Баталий

Операторы сравнения VBA - не равно и не только

VBA позволяет использовать операторы сравнения для сравнения значений. Используя эти операторы, вы можете сравнивать значения и в результате возвращать логическое значение True или False.

Список основных операторов сравнения в VBA

Сначала мы отобразим список операторов сравнения, которые можно использовать в коде VBA:

Оператор сравнения

Больше или равно

12345 Если intA> intB ТогдаblnResult = TrueЕщеblnResult = ЛожьКонец, если

В заключение, посколькуintA больше, чем intB, то blnResult возвращает True:


Изображение 3. Использование оператора "Больше, чем"

Больше или равно

В Больше или равно Оператор проверяет, больше ли первое значение второму или равно ему, и возвращает True или False. Вот пример кода:

123456789101112 Dim intA как целое числоDim intB как целое числоDim blnResult As BooleanintA = 5intB = 5Если intA> = intB ТогдаblnResult = TrueЕщеblnResult = ЛожьКонец, если

В этом примере мы хотим проверить, intA Больше или равно intB. Если это правда, значение Boolean blnResult будет True, в противном случае - False.

Мы используем>= в операторе If, чтобы проверить, имеет ли значение intA Больше или равно intB:

12345 Если intA> = intB ТогдаblnResult = TrueЕщеblnResult = ЛожьКонец, если

В заключение, поскольку обе переменные равны 5, blnResult возвращает True:


Изображение 4. Использование оператора "Больше или равно"

Меньше, чем

В Меньше, чем Оператор проверяет, меньше ли первое значение второго и возвращает True или False. Вот пример кода:

123456789101112 Dim intA как целое числоDim intB как целое числоDim blnResult As BooleanintA = 5intB = 6Если intA <intB ТогдаblnResult = TrueЕщеblnResult = ЛожьКонец, если

В этом примере мы хотим проверить, intA меньше чем intB. Если это правда, значение Boolean blnResult будет True, в противном случае - False.

Читайте также: