Операторы vba


Содержание

Операторы vba

Инструкции (или операторы) языка – это программные единицы, выполняющие какие-то действия или описывающие данные.

В состав оператора входят одно или несколько ключевых слов, а также, возможно, параметры. Несколько операторов, расположенных в одной программной строке, отделяются друг от друга двоеточием. Если оператор слишком длинный, можно разбить его на несколько строк, используя для переноса символ подчеркивания _.

Оператор присвоения используется для присвоения нового значения переменной в ходе выполнения программы. Знак присвоения «=».

Например, оператор:

x = Sqr(5 + Tan(1.8) ^ 2)

присваивает переменной х значение выражения . В результате вычисления выражения, записанного в правой части, получим вещественное число. Но значение, которое будет присвоено переменной х, зависит от того, как был описан тип этой переменной. Так, если переменная х имеет тип Single, ей будет присвоен результат 4,834464 , если Double, то 4,83446368725481, а если Integer, то 5.

Тип данных переменной х должен быть совместим с типом данных этого выражения. Кроме неявного преобразования из одного типа в другой при присвоении, в языке Visual Basic предусмотрена возможность преобразования типов с помощью функций. Например, функция CDbl преобразует данные к типу Double, CInt – к типу Integer, Clng – к типу Long, CSng – к типу Single, CStr – к типу String и т. д.

Функции CInt и Clng выполняют округление результата. При этом если дробная часть числа равна 0,5, округление производится до ближайшего четного числа.

Оператор присвоения позволяет не только присвоить значение переменной, но и задать значения свойств объектов VBA. Например, оператор

Rows(«1:1»).Font. Bold = True

делает полужирным шрифт в первой строке рабочего листа.

ПЕРЕНОС СТРОКИ

Комбинация + в конце строки обеспечивает то, что последующая строка является продолжением предыдущей. При этом надо помнить что:

§ Нельзя разбивать переносом строковые константы

§ Допустимо не более семи продолжений одной и той же строки

§ Сама строка не может содержать более 1024 символов

Некорректный перенос Корректный перенос

Строка = «Visual Basic for _ Строка = «Visual Basic» _

Applications» & «for Applications «

КОММЕНТАРИИ

Текст, следующий в программе за символом ( ‘ ) вплоть до конца строки игнорируется компилятором и является комментарием. С помощью комментариев добавляются пояснения и описания к программе. Комментарии полезны при отладке программы: они позволяют временно отключить строки программы при отладке.

Условный оператор

Условный оператор выполняет определенные инструкции (операторы) в зависимости от значения выражения условия. Блок-схема проверки условия имеет вид:

Рис. 1. Ветвление может быть неполным (такую структуру называют еще обход).

Рис. 2. Условный оператор имеет две формы синтаксиса: строчную и блочную.

Строчная форма

If условие Then [операторы­_если_истина] [Else операторы­_если_ложь]

Алгоритм, представленный на рис. 1, в строчной форме будет записан в виде

If условие Then операторы­_если_истина Else операторы­_если_ложь

Рисунку 2 соответствует запись

If условие Then операторы­_если_истина

Рисунку 3 соответствует запись

If условие Then Else операторы­_если_ложь

Блочная форма

If условие-1 Then

[ElseIf условие-2 Then

[операторы­_если_ условие–1_ложь, а_условие–2_истина]]

[операторы­_если_ все_предыдущие_условия_ложь, а_условие–n_истина]]

Условия, перечисленные в частях If и ElseIf, представляют собой выражения отношения или логические выражения. При выполнении одного из условий выполняются инструкции, следующие за соответствующим ему ключевым словом Then, а остальные инструкции игнорируются (т. е. дальнейшие проверки не выполняются и управление передается оператору, следующему за End If). Если ни одно из логических условий не равно истине, то выполняются операторы­_если_ все_предыдущие_условия_ложь, либо, если эта часть опущена, управление передается строке программы, следующей после условного оператора.

Блочная форма оператора If более предпочтительна, если:

— при выполнении или невыполнении условия выполняется несколько операторов (строчную форму в этом случае тоже можно использовать, но строка будет слишком длинной, а программа – менее понятной);

— последовательно проверяется несколько условий, и при выполнении очередного условия проверять последующие условия нецелесообразно (для этого и используется ключевое слово ElseIf).

Пример

Фирма предоставляет скидки оптовым покупателям.

По известному объему заказа надо определить его стоимость.

Для вычисления стоимости заказа используем функцию:

Public Function Стоимость_заказа(Количество As Long) As Double

If Количество = 1000 And Количество = 2000 Then Стоимость_заказа1 = Количество * 4.75

Если не считать недостатками то, что строки длинноваты, и при любом объеме заказа последовательно выполняются все проверки (первая процедура при малых объемах заказа работает быстрее), то программа написана верно и, может быть, даже более наглядна.

Однако можно привести примеры, когда при выполнении (или невыполнении) одного из условий другие проверять просто нельзя.

Например, некоторые операторы должны выполняться при совместном выполнении условий: и . Если для проверки использовать оператор

If x>0 and y 0 Then If y 3 или Case Is >= 4 или Case 4 To 5.

Примечание. Ключевое слово Is можно не вводить, оно добавится само.

Пример

Рассмотренный выше пример с дисконтируемой ценой с помощью конструкции Select Case можно решить так:

Public Function Стоимость_заказа2(Количество As Long) As Double

3.2 Операторы VBA

Операторы VBA: арифметические, логические, сравнения, присвоения

Оператор — это наименьшая способная выполняться единица кода 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);
  • больше, чем и меньше, чем (> и 10);
  • больше или равно и меньше или равно (>= и = 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


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

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

Логические операторы VBA используются для объединения результатов отдельных логических выражений, чтобы создать сложные критерии для принятия решений в процедуре (таблица Б.3).

Таблица Б.3 – Логические операторы VBA

Конъюнкция . True, если оба Е1 и Е2

имеют значение True, иначе – False

Дизъюнкция . True, если одно выра-

жение или оба (Е1 и Е2) являются

равными True; иначе – False

Отрицание . True, если Е1 имеет зна-

чение False; False, если El является

Исключение . True, если Е1 и Е2

имеют разные значения; иначе –

Эквивалентность . True,если Е1 име-

ет то же самое значение, что и Е2;

Импликация . False, когда Е1 является

равным True и Е2 равно False; иначе

Операнды Е в этой таблице представляет собой любое допустимое выражение с результатом типа Boolean, такое как операция сравнения.

Приоритеты выполнения операций при вычислении сложных выражений

Сложное (составное) выражение (complex expression) – это любое выражение, образованное из двух или более выражений. В таблице Б.4 собраны операции по группам в порядке убывания приоритета, то есть чем ниже расположена группа, тем позже выполняются указанные в ней операции. Для изменения этого порядка применяются круглые скобки. Операции одного уровня выполняются слева направо в том порядке, в котором они записаны в выражении.

Visual Basic for Application.

Краткие теоретические сведения

1. Синтаксис и семантика языка программирования VBA

Синтаксис языка программирования — набор правил, описывающий комбинации символов алфавита, считающиеся правильно структурированной программой (документом) или её фрагментом.

Основные синтаксические принципы этого языка следующие:

  • VBA нечувствителен к регистру;
  • чтобы закомментировать код до конца строки, используется одинарная кавычка (‘) или команда REM;
  • символьные значения должны заключаться в двойные кавычки («);
  • максимальная длина любого имени в VBA (переменные, константы, процедуры) — 255 символов;
  • начало нового оператора — перевод на новую строку (точка с запятой, как в C, Java, JavaScript, для этого не используется);
  • ограничений на максимальную длину строки нет (хотя в редакторе в строке помещается только 308 символов). Несколько операторов в одной строке разделяются двоеточиями:
    MsgBox «Проверка 1» : MsgBox «Проверка 2»
  • для удобства чтения можно объединить несколько физических строк в одну логическую при помощи пробела и знака подчеркивания после него:
    MsgBox «Сообщение пользователю» _
    & vUserName

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

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

Арифметических операторов в VBA всего 7.

Четыре стандартных: сложение (+), вычитание (−), умножение (*), деление (/), и еще три:

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

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

Здесь не путайте знак равенства с оператором равенства. Последнее выражение означает «присвоить переменной nVar значение 10», а если строка выглядит так: If (nVar = 10) , то это значит «если значение переменной nVar равно 10».

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

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

Операторы сравнения всегда возвращают True (если утверждение истинно) или False (если утверждение ложно).

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

  • And — логическое И. Должны быть истинными оба условия;
  • Or — логическое ИЛИ. Должно быть истинным хотя бы одно из условий;
  • Not — логическое отрицание. Возвращает True, если условие ложно;
  • Xor — логическое исключение. В выражении E1 Xor E2 возвращает True, если только E1 = True или только E2 = True, иначе — False;
  • Eqv — эквивалентность двух выражений, возвращает True, если они имеют одинаковое значение;
  • Imp — импликация, E1 Imp E2 возвращает False, если E1 = True и E2 = False, иначе — True.

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

Переменные — это контейнеры для хранения изменяемых данных. Без них не обходится практически ни одна программа. Для простоты переменную можно сравнить с номерком в гардеробе — вы сдаете в гардероб какие-то данные, в ответ вам выдается номерок. Когда вам опять потребовались эти данные, вы «предъявляете номерок» и получаете их.

Каждая переменная имеет имя. Обращение к переменной происходит по имени. Правила выбора имен в VBA едины для многих элементов (переменные, константы, функции, процедуры и т. п.):

  • имя должно начинаться с буквы;
  • не должно содержать пробелов и символов пунктуации (исключение — символ подчеркивания);
  • максимальная длина — 255 символов;
  • должно быть уникальным в текущей области видимости
  • зарезервированные слова (те, которые подсвечиваются синим цветом в окне редактора кода) использовать нельзя.

При создании программ VBA рекомендуется определиться с правилами, по которым будут присваиваться имена объектам — соглашение об именовании. Чаще всего используется так называемое венгерское соглашение (в честь одного из программистов Microsoft, Charles Simonyi, венгра по национальности):

  • имя переменной должно начинаться с префикса, записанного строчными буквами. Префикс указывает, что именно будет храниться в этой переменной:
    • str (или s) — String, символьное значение;
    • fn (или f) — функция;
    • sub — процедура;
    • c (или все буквы имени заглавные) — константа (контейнер для хранения данных, которые, в отличие от переменных, не изменяются в ходе выполнения VBA-программы);
    • b — Boolean, логическое значение (True или False);
    • d — дата;
    • obj (или o) — ссылка на объект;
    • n — числовое значение;
  • имена функций, методов и каждое слово в составном слове должно начинаться с заглавной буквы:
    MsgBox objMyDocument.Name
    Sub CheckDateSub()
Илон Маск рекомендует:  Что такое код swf_perspective

Тип данных относят к самым фундаментальным понятиям любого языка программирования. Тип данных определяет множество допустимых значений, которое может принимать величина (переменная или константа), и множество действий, которые можно выполнить с этой величиной.

2. Основные типы данных VBA

В VBA предусмотрены следующие типы данных:

  • числовые:
    Byte — целое число от 0 до 255, для хранения нужен 1 байт памяти;
    Integer — целое число от −32 768 до 32 767, 2 байта;
    Long — большое целое число от −2 147 483 648 до 2 147 483 647, 4 байта;
    Currency (денежный) — большое десятичное число с 19 позициями, включая 4 позиции после запятой
    (от –922337203685477,5808 до 922337203685477,5807), 4 байта,
    используется для хранения чисел, когда точность крайне важна, что бывает при вычислениях с денежными единицами;
    Decimal — еще большее десятичное число с 29 позициями (после запятой можно использовать от 0 до 28 позиций), 8 байт;
    Single и Double — значения с плавающей запятой (4 и 8 байт)
    (от -3.402823·10 38 до -1.401298·10 -45 для отрицательных значений и
    от 1.401298·10 -45 до 3.402823·10 38 для положительных значений для Single, и
    от -1.79769313486232·10 308 до -4.94065645841247·10 -324 для отрицательных значений и
    от 4.94065645841247·10 -324 до 1.79769313486232·10 308 для положительных значений для Double);
  • строковые (String переменной длины (примерно до 2 млрд символов) и фиксированной длины (примерно до 65 400 символов));
  • дата и время (Date — от 01.01.100 до 31.12.9999), 8 байт;
  • логический (Boolean — может хранить только значения True и False), 2 байта;
  • объектный (Object — хранит ссылку на любой объект в памяти);
  • Variant — специальный тип данных, который может хранить любые типы данных, 16 байт +1

Обозначения типов данных является ключевыми словами языка (и выделяется после набора в редакторе VBA).

Над различными типами данных допустимы различные операции. В VBA имеются три основных типа операций:

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

3. Приоритеты операций

Приоритет Операция
1
2
3
4
5
6
7
8
9
10
11
12
Вызов функции и скобки
^
— (смена знака)
*, /
\
Mod
+, –
>, =, , =
Not
And
Or
Xor

4. Математические функции

Функция Возвращаемое значение
Abs ( ) Модуль (абсолютная величина) числа
Atn ( ) Арктангенс
Cos ( ) Косинус
Exp ( ) Экспонента, т. е. результат возведения основания натурального логарифма в указанную степень
Log( ) Натуральный логарифм
Rnd ( ) Случайное число из интервала [0,1).

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

Операторы vba

Самая актуальная документация по Visual Studio 2020: Документация по Visual Studio 2020.

Оператор в Visual Basic — это полная инструкция. В инструкциях содержатся ключевые слова, операторы, переменные, константы и выражения. Каждая инструкция принадлежит к одной из следующих двух категорий:

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

Выполняемые операторы, которые инициируют действия. Эти операторы могут вызывать метод или функцию, а также способны выполнять цикл или ветвь, состоящие из блоков кода. Исполняемые операторы содержат Операторы присваивания, которые присваивают значение или выражение переменной или константе.

В этом разделе описана каждая категория. Также в этом разделе описано, как поместить несколько операторов в одной строке и как продолжить оператор на несколько строк.

Операторы объявления используются для именования и определения процедур, переменных, свойств, массивов и констант. При объявлении элемента программирования можно также определить его тип данных, уровень доступа и область действия. Дополнительные сведения см. в разделе Характеристики объявленных элементов.

В следующем примере показаны три объявления.

Первое объявление — это оператор Sub . Он совместно с соответствующим ему оператором End Sub объявляет процедуру с именем applyFormat . Он также указывает, что applyFormat является Public , что означает, что любой код, который к нему обращается, может его вызвать.

Второе объявление — это оператор Const , который объявляет константу limit , указывая тип данных Integer и значение 33.

Третье объявление — это оператор Dim , который объявляет переменную thisWidget . Тип данных является определенным объектом, а именно объектом, созданным из класса Widget . Можно объявить переменную любого простейшего типа данных или типа объекта, который предоставляется в приложении.

Исходное значение

При выполнении кода, содержащего оператор объявления, Visual Basic резервирует память, требуемую для объявленного элемента. Если элемент содержит значение, Visual Basic инициализирует его значением по умолчанию для его типа данных. Дополнительные сведения см. в разделе «Поведение» в Оператор Dim.

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

Если переменная является объектной переменной, можно явно создать экземпляр ее класса при ее объявлении с помощью ключевого слова Оператор New, например:

Обратите внимание, что начальное значение в операторе объявления не присваивается переменной до тех пор, пока выполнение не достигнет его оператора объявления. До этого времени переменная содержит значение по умолчанию для своего типа данных.

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

В следующем примере используется управляющая структура If. Then. Else для выполнения различных блоков кода на основе значения переменной. В каждом блоке кода цикл For. Next выполняется заданное число раз.

Инструкция If в предыдущем примере проверяет значение параметра clockwise . Если значение равно True , то вызывается метод spinClockwise из aWidget . Если значение равно False , то вызывается метод spinCounterClockwise из aWidget . Управляющая структура If. Then. Else завершается End If .

Цикл For. Next в каждом блоке вызывает соответствующий метод определенное количество раз, равное значению параметра revolutions .


Операторы присваивания выполняют присваивание, сводящееся к вычислению значения справа от оператора присваивания ( = ) и его записи в элемент слева, как в следующем примере.

В этом примере оператор присваивания сохраняет значение литерала 42 в переменной v .

Подходящие элементы программирования

Элемент программирования слева от оператора присваивания должен иметь возможность принимать и хранить значение. Это означает, что он должен быть переменной или свойством, не являющимся ReadOnly, или же элементом массива. В контексте оператора присваивания такой элемент иногда называется lvalue («левое значение»).

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

В этом примере осуществляется сложение значения переменной y со значением переменной z , а затем сложение со значением, возвращаемым функцией findResult . Общее значение этого выражения затем сохраняется в переменной x .

Типы данных в операторах присваивания

В дополнение к числовым значениям оператор присваивания также может присваивать значения типа String , как показано в следующем примере.

Можно также присваивать значения Boolean с помощью литерала Boolean или выражения Boolean , как показано в следующем примере.

Аналогично, можно присваивать соответствующие значения элементам программирования типов Char , Date и Object . Можно также присвоить экземпляр объекта элементу класса, из которого этот экземпляр был создан.

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

Составные операторы присваивания сначала выполняют операцию над выражением перед присваиванием его значения программному элементу. В следующем примере показан один из этих операторов, += , который прибавляет значение переменной в левой части оператора к значению выражения справа:

В предыдущем примере к значению n прибавляется 1, а затем новое значение записывается в n . Это краткий эквивалент следующего оператора:

Многие составные операции присваивания выполняются с помощью операторов этого типа. Список этих операторов и дополнительные сведения о них см. в разделе Операторы присваивания.

Оператор объединения и присваивания ( &= ) удобен при добавлении строки в конец уже существующих строк, например:

Преобразование типов в операторах присваивания

Значение, присваиваемое переменной, свойству или элементу массива, должно иметь тип данных конечного элемента. В общем случае следует стремиться создавать значение того же типа данных, что и у конечного элемента. Тем не менее, во время присваивания некоторые типы могут быть преобразованы в другие.

Сведения о преобразовании типов данных см. в разделе Преобразование типов в Visual Basic. Говоря коротко, Visual Basic автоматически преобразует значение заданного типа к любому другому типу, до которого он может быть расширен. Расширяющее преобразование всегда успешно завершается во время выполнения и не приводит к потере данных. Например, Visual Basic при необходимости преобразует значение типа Integer к Double , поскольку Integer имеет меньшую разрядность, чем Double . Дополнительные сведения см. в разделе Расширяющие и сужающие преобразования.

Сужающие преобразования (не являющиеся расширяющими) выполняются с риском сбоя или потери данных во время выполнения. Явное сужающее преобразование можно выполнять с помощью функции преобразования типа; также можно указать компилятору выполнять все преобразования неявно, установив параметр Option Strict Off . Дополнительные сведения см. в разделе Явные и неявные преобразования.

На одной строке возможно размещение нескольких операторов, разделенных символом двоеточия ( : ). Это показано в приведенном ниже примере.

Хотя это иногда и удобно, эта форма синтаксиса осложняет чтение и сопровождение кода. Поэтому рекомендуется писать по одному оператору на строке.

Оператор обычно занимает одну строку, но длинный оператор можно продолжить на следующих строках с помощью символа продолжения строки, состоящего из символа подчеркивания ( _ ), за которым следует перевод строки. В следующем примере выполняемый оператор MsgBox располагается на двух строках.

Неявное продолжение строки

Во многих случаях инструкцию можно продолжить на следующей строке, не используя знак подчеркивания (_). В следующей таблице приведен список элементов синтаксиса, которые неявно продолжают инструкцию на следующей строке кода.

Дополнительные сведения см. в разделе Встроенные выражения в XML.

Дополнительные сведения см. в разделе Список операторов, сгруппированных по функциональному назначению.

Дополнительные сведения см. в разделе Список операторов, сгруппированных по функциональному назначению.

Дополнительные сведения см. в разделе Список операторов, сгруппированных по функциональному назначению.

Дополнительные сведения см. в разделе Список операторов, сгруппированных по функциональному назначению.

Дополнительные сведения см. в разделе Оператор With. End With или Инициализаторы объектов: именованные и анонимные типы.

Дополнительные сведения см. в разделе Свойства оси XML.

Дополнительные сведения см. в разделе Атрибуты.

Дополнительные сведения см. в разделе Запросы.

Дополнительные сведения см. в разделе Оператор For Each. Next.

Дополнительные сведения см. в разделе Инициализаторы коллекций.

Элемент синтаксиса Пример
После запятой ( , ).
После открывающей скобки ( ( ) или перед закрывающей скобкой ( ) ).
После открывающей фигурной скобки ( < ) или перед закрывающей фигурной скобкой ( >).

Дополнительные сведения см. в разделе Инициализаторы объектов: именованные и анонимные типы или Инициализаторы коллекций.

После открытого встроенного выражения ( ) или перед закрытием встроенного выражения ( %> ) в рамках XML-литерала.
После оператора объединения ( & ).
После операторов назначения ( = , &= , := , += , -= , *= , /= , \= , ^= , , >>= ).
После двоичных операторов ( + , — , / , * , Mod , <> , , > , , >= , ^ , >> , , And , AndAlso , Or , OrElse , Like , Xor ) в рамках выражения.
После операторов Is и IsNot .
После символа квалификатора элемента ( . ) перед именем элемента. Однако необходимо использовать знак продолжения строки (_) после знака квалификатора элемента при использовании оператора With или указании значений в списке инициализации для типа. При использовании оператора With или списков инициализации объектов попробуйте разорвать строку после оператора назначения (например, = ).
После квалификатора свойства XML-оси ( . или .@ или . ). Однако необходимо использовать знак продолжения строки (_) при указании квалификатора элемента с использованием ключевого слова With .
После знака «меньше» ( > ) при задании атрибута. Также после знака «больше» ( > ) при задании атрибута. Однако необходимо использовать знак продолжения строки (_) при задании атрибутов уровня сборки или уровня модуля.
До и после операторов запроса ( Aggregate , Distinct , From , Group By , Group Join , Join , Let , Order By , Select , Skip , Skip While , Take , Take While , Where , In , Into , On , Ascending и Descending ). Нельзя разрывать строку между ключевыми словами операторов запросов, состоящих из нескольких ключевых слов ( Order By , Group Join , Take While и Skip While ).
После ключевого слова In в операторе For Each .
После ключевого слова From в инициализаторе коллекции.

Исходный код не всегда понятен без пояснений даже для написавшего его программиста. Поэтому для документирования своих кодов большинство программистов использует комментарии. С помощью комментариев в коде можно описать процедуру или определенную инструкцию для тех, кто будет в дальнейшем просматривать этот код или работать с ним. При компиляции в Visual Basic комментарии игнорируются, и они не влияют на скомпилированный код.

Строки комментариев начинаются с апострофа ( ‘ ) или REM , за которым следует пробел. Они могут быть добавлены в любое место кода, за исключением места внутри строковых типов данных. Для добавления комментария в инструкцию вставьте апостроф или REM после оператора, за которым следует комментарий. Комментарии также могут размещаться на отдельной строке. В следующем примере показаны эти возможности.

Если после набора строки кода строка отображается с подчеркнутой волнистой голубой линией (также может быть выведено и сообщение об ошибке), это означает, что в операторе допущена синтаксическая ошибка. Необходимо узнать, в чем заключается ошибка инструкции (для этого просмотрите список задач или поместите указатель мыши на ошибку и прочтите ее описание) и исправить ее. До тех пор, пока все синтаксические ошибки не будут исправлены, программа будет давать сбой при компиляции.

Урок 2 по 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, как уже говорилось, надо прописать два выражения, первое – это тестовая строка, а второе – шаблон. Шаблон может содержать следующие подстановочные знаки:

  • # — одиночная цифра от 0 до 9
  • * — абсолютно любое количество любых символов, в том числе и нулевой
  • ? – одиночный любой символ
  • [a,b,c] – в данном случае любой одиночный символ из заданного списка, тут a, b или c
  • [!a,b,c] – в данном случае любой одиночный символ, которого нет в заданном списке

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

Оператор Синтаксис Описание
AND A AND B Конъюнкция: Если А и В имеют значение True, то — True. Иначе — False
OR A OR B Дизъюнкция: Если любой из операндов имеет значение True, то — True. Иначе — False
NOT NOT A Отрицание: Если А имеет значение False, то — True. Иначе — False
XOR A XOR B Исключение: Если А имеет значение True или В имеет значение True, то — True. Иначе — False
EQV A EQV B Эквивалентность: Если А имеет такое же значение что и В, то — True. Иначе — False
IMP A IMP B Импликация: Если А имеет значение True и В имеет значение False, то — False. Иначе — True

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

Результатом логической операции является значение типа Boolean (или Null, если хотя бы один из операндов имеет значение Null).

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

Синтаксис:
Операнд_1 AND Операнд_2

Оператор AND выполняет логическую конъюнкцию.

Результатом данной операции является значение True, только когда оба операнда имеют значение True, иначе — False.

Операнд_1 Операнд_2 Результат
True True True
True False False
False True False
False False False


Оператор AND можно использовать для нескольких операндов:

(5 3) AND (5=6) результатом будет False

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

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

Синтаксис:
Операнд_1 OR Операнд_2

Оператор OR выполняет логическую дизъюнкцию.

Результатом данной операции является значение True, если хотя бы один из операндов имеет значение True, иначе — False.

Операнд_1 Операнд_2 Результат
True True True
True False True
False True True
False False False

Оператор OR можно использовать для нескольких операндов:

(5 3) OR (5=6) результатом будет True

Независимо от количества операндов результатом логической операции OR будет всегда True в том случае, если хотя бы один из операндов выражения будет иметь значение True. Иначе результатом будет False.

Операторы AND и OR можно комбинировать:

((5 3)) OR (5=6) результатом будет True

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

Синтаксис:
NOT Операнд

Оператор NOT выполняет логическое отрицание.

Оператор NOT использует только один операнд.

Операнд Результат
True False
False True

Операторы AND OR NOT можно комбинировать:

((5 3)) OR NOT (5=6) результатом будет True

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

Синтаксис:
Операнд_1 XOR Операнд_2

Оператор XOR выполняет логическое исключение.

Результатом данной операции является значение True, если операнды имеют разные значения, иначе — False.

Операнд_1 Операнд_2 Результат
True True False
True False True
False True True
False False False

((5 3)) OR NOT (5=6) XOR (5=5) результатом будет False

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

Синтаксис:
Операнд_1 EQV Операнд_2

Оператор EQV — это оператор логической эквивалентности.

Результатом данной операции является значение True, если операнды имеют одинаковые значения, иначе — False.

Операнд_1 Операнд_2 Результат
True True True
True False False
False True False
False False True

((5 3)) OR NOT (5=6) EQV (5=5) результатом будет True

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

Синтаксис:
Операнд_1 IMP Операнд_2

Оператор IMP выполняет логическую операцию импликации.

Операнд_1 Операнд_2 Результат
True True True
True False False
False True True
False False True

((5 3)) OR NOT (5=6) IMP (5=5) результатом будет True

Логический оператор IMP наименее интуитивно понятный из всех логических операторов. К счастью, необходимость в его применении возникает довольно редко.

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

пример

знак название Описание
= Равно Возвращает True если левый и правый операнды равны. Обратите внимание, что это перегрузка оператора присваивания.
<> Не равен Возвращает True если левый и правый операнды не равны.
> Лучше чем Возвращает True если левый операнд больше правого операнда.
Меньше, чем Возвращает True если левый операнд меньше правого операнда.
>= Больше или равно Возвращает True если если левый операнд больше или равен правому операнду.
Меньше или равно Возвращает True если левый операнд меньше или равен правому операнду.
Is Справочный капитал Возвращает значение True если ссылка на левый объект — это тот же экземпляр, что и ссылка на правый объект. Он также может использоваться с Nothing (ссылка на нулевой объект) с обеих сторон. Примечание. Оператор Is попытается принудить оба операнда к Object перед выполнением сравнения. Если какая-либо сторона является примитивным типом или Variant , который не содержит объект (либо не-объектный подтип, либо vtEmpty ), сравнение приведет к ошибке времени выполнения 424 — «Требуется объект». Если любой операнд принадлежит другому интерфейсу одного и того же объекта, сравнение вернет True . Если вам нужно проверить справедливость как экземпляра, так и интерфейса, ObjPtr(left) = ObjPtr(right) используйте ObjPtr(left) = ObjPtr(right) .

Заметки

Синтаксис VBA позволяет «цепочки» операторов сравнения, но в целом эти конструкции следует избегать. Сравнение всегда выполняется слева направо только на 2 операндах за раз, и каждое сравнение приводит к Boolean . Например, выражение .

. может быть прочитан в некоторых контекстах как проверка того, является ли b между a и c . В VBA это оценивается следующим образом:

Любой оператор сравнения, кроме Is использоваться с Object в качестве операнда будет выполняться на возвращаемом значении Object «s члена по умолчанию . Если объект не имеет члена по умолчанию, сравнение приведет к ошибке времени выполнения 438 — «Объект не поддерживает его свойство или метод».

Если Object не инициализирован, сравнение приведет к ошибке времени выполнения 91 — «Объектная переменная или С заблокированной переменной блока».

Если литерал Nothing используется с любым оператором сравнения, отличным от Is , это приведет к ошибке компиляции — «Недопустимое использование объекта».

Если Object по умолчанию Object является другой Object , VBA будет постоянно вызывать элемент по умолчанию каждого последующего возвращаемого значения до тех пор, пока не будет возвращен примитивный тип или не будет поднята ошибка. Например, предположим, что у SomeClass есть член по умолчанию Value , который является экземпляром ChildClass с членом ChildValue по ChildValue . Сравнение.

. будет оцениваться как:

Если либо операнд является числовым, а другой операндом является String или Variant подтипа String , будет выполнено числовое сравнение. В этом случае, если String не может быть отнесено к числу, результатом сравнения будет ошибка времени выполнения 13 — «Несоответствие типа».

Если оба операнда представляют собой String или Variant подтипа String , сравнение строк будет выполняться на основе параметра сравнения параметров модуля кода. Эти сравнения выполняются по характеру по характеру. Обратите внимание, что символьное представление String содержащей число, не совпадает с сопоставлением числовых значений:

По этой причине убедитесь, что переменные String или Variant передаются в числа перед выполнением численных сравнений неравенства.

Если один из операндов — это Date , то числовое сравнение по базовому двойному значению будет выполняться, если другой операнд является числовым или может быть преобразован в числовой тип.

Если другой операнд представляет собой String или Variant подтипа String который может быть перенесен в Date с использованием текущего языкового стандарта, String будет передана в Date . Если он не может быть применен к Date в текущей локали, результатом сравнения будет ошибка времени выполнения 13 — «Несоответствие типа».

Следует соблюдать осторожность при сравнении значений Double или Single и Booleans . В отличие от других числовых типов ненулевые значения нельзя считать True из-за поведения VBA в продвижении типа данных сравнения с использованием числа с плавающей точкой в Double :

Visual Basic for Application.

Краткие теоретические сведения

1. Синтаксис и семантика языка программирования VBA

Синтаксис языка программирования — набор правил, описывающий комбинации символов алфавита, считающиеся правильно структурированной программой (документом) или её фрагментом.

Основные синтаксические принципы этого языка следующие:

  • VBA нечувствителен к регистру;
  • чтобы закомментировать код до конца строки, используется одинарная кавычка (‘) или команда REM;
  • символьные значения должны заключаться в двойные кавычки («);
  • максимальная длина любого имени в VBA (переменные, константы, процедуры) — 255 символов;
  • начало нового оператора — перевод на новую строку (точка с запятой, как в C, Java, JavaScript, для этого не используется);
  • ограничений на максимальную длину строки нет (хотя в редакторе в строке помещается только 308 символов). Несколько операторов в одной строке разделяются двоеточиями:
    MsgBox «Проверка 1» : MsgBox «Проверка 2»
  • для удобства чтения можно объединить несколько физических строк в одну логическую при помощи пробела и знака подчеркивания после него:
    MsgBox «Сообщение пользователю» _
    & vUserName

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

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

Арифметических операторов в VBA всего 7.

Четыре стандартных: сложение (+), вычитание (−), умножение (*), деление (/), и еще три:

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

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

Здесь не путайте знак равенства с оператором равенства. Последнее выражение означает «присвоить переменной nVar значение 10», а если строка выглядит так: If (nVar = 10) , то это значит «если значение переменной nVar равно 10».

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

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

Операторы сравнения всегда возвращают True (если утверждение истинно) или False (если утверждение ложно).

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

  • And — логическое И. Должны быть истинными оба условия;
  • Or — логическое ИЛИ. Должно быть истинным хотя бы одно из условий;
  • Not — логическое отрицание. Возвращает True, если условие ложно;
  • Xor — логическое исключение. В выражении E1 Xor E2 возвращает True, если только E1 = True или только E2 = True, иначе — False;
  • Eqv — эквивалентность двух выражений, возвращает True, если они имеют одинаковое значение;
  • Imp — импликация, E1 Imp E2 возвращает False, если E1 = True и E2 = False, иначе — True.

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

Переменные — это контейнеры для хранения изменяемых данных. Без них не обходится практически ни одна программа. Для простоты переменную можно сравнить с номерком в гардеробе — вы сдаете в гардероб какие-то данные, в ответ вам выдается номерок. Когда вам опять потребовались эти данные, вы «предъявляете номерок» и получаете их.

Каждая переменная имеет имя. Обращение к переменной происходит по имени. Правила выбора имен в VBA едины для многих элементов (переменные, константы, функции, процедуры и т. п.):

  • имя должно начинаться с буквы;
  • не должно содержать пробелов и символов пунктуации (исключение — символ подчеркивания);
  • максимальная длина — 255 символов;
  • должно быть уникальным в текущей области видимости
  • зарезервированные слова (те, которые подсвечиваются синим цветом в окне редактора кода) использовать нельзя.

При создании программ VBA рекомендуется определиться с правилами, по которым будут присваиваться имена объектам — соглашение об именовании. Чаще всего используется так называемое венгерское соглашение (в честь одного из программистов Microsoft, Charles Simonyi, венгра по национальности):


  • имя переменной должно начинаться с префикса, записанного строчными буквами. Префикс указывает, что именно будет храниться в этой переменной:
    • str (или s) — String, символьное значение;
    • fn (или f) — функция;
    • sub — процедура;
    • c (или все буквы имени заглавные) — константа (контейнер для хранения данных, которые, в отличие от переменных, не изменяются в ходе выполнения VBA-программы);
    • b — Boolean, логическое значение (True или False);
    • d — дата;
    • obj (или o) — ссылка на объект;
    • n — числовое значение;
  • имена функций, методов и каждое слово в составном слове должно начинаться с заглавной буквы:
    MsgBox objMyDocument.Name
    Sub CheckDateSub()

Тип данных относят к самым фундаментальным понятиям любого языка программирования. Тип данных определяет множество допустимых значений, которое может принимать величина (переменная или константа), и множество действий, которые можно выполнить с этой величиной.

2. Основные типы данных VBA

В VBA предусмотрены следующие типы данных:

  • числовые:
    Byte — целое число от 0 до 255, для хранения нужен 1 байт памяти;
    Integer — целое число от −32 768 до 32 767, 2 байта;
    Long — большое целое число от −2 147 483 648 до 2 147 483 647, 4 байта;
    Currency (денежный) — большое десятичное число с 19 позициями, включая 4 позиции после запятой
    (от –922337203685477,5808 до 922337203685477,5807), 4 байта,
    используется для хранения чисел, когда точность крайне важна, что бывает при вычислениях с денежными единицами;
    Decimal — еще большее десятичное число с 29 позициями (после запятой можно использовать от 0 до 28 позиций), 8 байт;
    Single и Double — значения с плавающей запятой (4 и 8 байт)
    (от -3.402823·10 38 до -1.401298·10 -45 для отрицательных значений и
    от 1.401298·10 -45 до 3.402823·10 38 для положительных значений для Single, и
    от -1.79769313486232·10 308 до -4.94065645841247·10 -324 для отрицательных значений и
    от 4.94065645841247·10 -324 до 1.79769313486232·10 308 для положительных значений для Double);
  • строковые (String переменной длины (примерно до 2 млрд символов) и фиксированной длины (примерно до 65 400 символов));
  • дата и время (Date — от 01.01.100 до 31.12.9999), 8 байт;
  • логический (Boolean — может хранить только значения True и False), 2 байта;
  • объектный (Object — хранит ссылку на любой объект в памяти);
  • Variant — специальный тип данных, который может хранить любые типы данных, 16 байт +1

Обозначения типов данных является ключевыми словами языка (и выделяется после набора в редакторе VBA).

Над различными типами данных допустимы различные операции. В VBA имеются три основных типа операций:

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

3. Приоритеты операций

Приоритет Операция
1
2
3
4
5
6
7
8
9
10
11
12
Вызов функции и скобки
^
— (смена знака)
*, /
\
Mod
+, –
>, =, , =
Not
And
Or
Xor

4. Математические функции

Функция Возвращаемое значение
Abs ( ) Модуль (абсолютная величина) числа
Atn ( ) Арктангенс
Cos ( ) Косинус
Exp ( ) Экспонента, т. е. результат возведения основания натурального логарифма в указанную степень
Log( ) Натуральный логарифм
Rnd ( ) Случайное число из интервала [0,1).

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

Операнды, операции, выражения в VBA

Выражения

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

Операнды (operands) в программировании — это объекты, над которыми выполняют определенные действия (операции).

Знаки операций — это символы, которые используют для соединения операндов в выражении.

Операции в VBA — это действия, которые производят над операндами. Знаки операций в выражении имеют свои приоритеты.

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

Отметим, что в одном выражении нельзя использовать несовместимые типы данных.

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

Попробуй обратиться за помощью к преподавателям

Операции

К операциям, которые используются для записи выражений в VBA, относят:

  • операции присваивания;
  • математические операции;
  • логические операции;
  • операции сравнения (отношений);
  • операции для работы со строками (строковые операции).

Операция присваивания

Когда мы в программе объявляем переменную, происходит связывание имени этой переменной с областью памяти, в которой будет храниться ее значение, которое, в свою очередь, после объявления может оказаться произвольным. Возникает необходимость присвоения переменной нужного значения, для этого используем операцию присваивания, назначающую результат вычисления выражения переменной, константе или же свойству объекта. В операции присваивания всегда используют знак равенства =.

Синтаксис данной операции имеет вид:

  • Имя_Переменной – имя переменной (идентификатор);
  • Символ «=» – знак операции присваивания;
  • выражение – значение (число), комбинация переменных, констант, функций, связанных знаками операций.

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

Задай вопрос специалистам и получи
ответ уже через 15 минут!

Для присваивания переменной ссылки на объект применяется инструкция Set. В общем случае инструкция Set имеет следующий синтаксис:

$Set objectvar = [New] objectexpression [Nothing]$

  • New– ключевое слово, которое используется при создании нового экземпляра объекта;
  • Nothing– позволяет освободить все системные ресурсы и ресурсы памяти, выделенные для объекта, на который имелась ссылка (т.е. она удаляет объект из памяти).

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

Математические операторы — это ничто иное, как инструкции, в которых используют математические операции.

В VBA используются следующие математические операции: сложение (+), вычитание (-), умножение (*), деление (/), деление без остатка (), остаток от деления по модулю (mod), возведение в степень (^).

При этом каждая операция имеет свой приоритет, или как его еще называют ранг. Операции 1 ранга будут иметь наивысший приоритет и в программном операторе выполнятся первыми. Операции одного ранга в выражениях выполняются согласно правил ассоциативности (слева направо или наоборот). Так операцией 1 ранга будет являться выражение, заключенное в скобки (), 2 приоритет имеет операция вызова функции, 3 – операция возведения в степень (^) и так далее, самый низший приоритет 12 имеет операция Or.

Оператор сложения (+)

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

Тип данных результата выражения сложения, как правило, такой же, как и наиболее точный тип в этом выражении. Но, встречаются и исключения:

  • при сложении типов Single и Long результатом станет тип Double;
  • при сложении типа Date с любым другим типом данных результат всегда будет иметь тип Date;
  • при превышении результатом диапазона типа Integer, его преобразуют в тип Long;
  • при превышении результатом типов Long, Single, Date, его преобразуют в тип Double;
  • если любой операнд в выражении сложения будет иметь тип Null, то и результат выражения сложения также будет иметь тип Null.

Оператор вычитания (-)

Данный оператор выполняет две задачи:

  • используется при вычитании одного числа из другого;
  • обозначает унарный минус (это знак минус, который помещается перед отрицательным числом).

Поместить унарный минус перед переменной или выражением означает то же, что умножить это число на -1. Оба операнда в выражении вычитания должны быть численными переменными (выражениями) или строковыми выражениями, которые можно преобразовать в число. Данный оператор можно использовать для работы с датами.

VBA использует те же правила для определения типа данных результата выражения вычитания, что и для выражений, использующих оператор сложения. Но, есть дополнение: если оба операнда в выражении являются типом Date, то результат выражения будет иметь тип Double.

Оператор умножения (*)

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

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

Оператор деления (/)

Оператор деления с плавающей точкой выполняет обычное математическое деление своих операндов. В выражениях деления первый операнд делится на второй и результатом деления является частное.

Оба операнда в выражении деления с плавающей точкой должны быть численными выражениями или строками, которые можно преобразовать в число. Если хотя бы один операнд в выражении деления будет иметь тип Null, то результат деления также будет иметь тип Null.

Типом данных операции деления с плавающей точкой является Double, за исключением случаев, когда:

  • оба операнда в выражении деления имеют типы Integer или Single – результат будет иметь тип Single;
  • результат выражения не переполняет диапазон значений для типа Single.

Целочисленное деление ()

Целочисленное деление отличается от деления с плавающей точкой тем, что его результатами всегда являются целые числа без дробной части, численными выражениями или строки, которые можно преобразовать в число. Перед выполнением операции целочисленного деления каждый операнд округляется до числа типа Integer или Long. VBA отбрасывает (но не округляет!) любой дробный остаток результата выражения целочисленного деления. Например, выражения 22\5 и 24\5 будут иметь один и тот же результат = 4. Если хотя бы один операнд в выражении целочисленного деления имеет тип Null, то результат деления также будет иметь тип Null.

Деление по модулю (Mod)

Деление по модулю как бы дополняет целочисленное деление. В делении по модулю выражение возвращает только остаток операции деления как целое. 22 Mod 5 = 4 24 Mod 5 = 8 25 Mod 5 = 0

Остальные свойства деления по модулю идентичны целочисленному делению.

Возведение в степень (^)

Оператор возведения в степень возводит число в степень.

Оба операнда в выражении возведения в степень должны быть численными выражениями или строками, которые можно преобразовать в числа. Операнд слева от оператора возведения в степень может быть отрицательным числом только, если операнд справа является целым.

Результат выражения имеет тип Double. Если хотя бы один операнд в выражении имеет тип Null, то результат возведения в степень также будет иметь тип Null.

Логические операции

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

Логические выражения имеют значение типа Boolean, которое принимает одно из двух логических значений: True (1) или False (0). При выполнении логических операций логическим переменным присваивается результат вычислений, указанный в правой части операторов. К логическим операциям относятся: and, or, nod, xor, eqv, imp (логическое и, или, нет, логическое исключающее или, логическая эквивалентность, логическая импликация). Например,

(9 > 8) Or (2 > 5). Результат является True (истина), так как одно из условий является True.

Операции сравнения (отношений)

В отличие от математических операций, результатом выполнения которых может быть любое значение, операция отношения может иметь только два результирующих значения – True (Истина) и False (Ложь), которые могут быть присвоены переменным типа Boolean или определенному свойству объекта. Операции отношения применяются для записи выражений условия, результатом выполнения которых являются значения True(Истина) или False(Ложь).

В операторах могут применяться с определенным синтаксисом следующие знаки операций сравнения: равенство (=), больше чем ( > ) и меньше чем (=) и меньше или равно ( > =) и меньше или равно ( > =) и меньше или равно.

Так и не нашли ответ
на свой вопрос?

Просто напиши с чем тебе
нужна помощь

Илон Маск рекомендует:  Что такое код settextjustify
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL