Наименование параметра | Значение |
Тема статьи: | Операторы VBA |
Рубрика (тематическая категория) | Программирование |
VBA - операторный язык. Это значит, что его программы (процедуры или функции) представляют последовательности операторов.
В языке VBA можно выделить следующие группы операторов:
1. декларативные операторы, предназначенные для описания объектов, с которыми работает программа (типов переменных, констант и массивов и др.),
2. операторы-комментарии,
3. операторы присваивания и изменения значений объектов,
4. операторы, управляющие ходом вычислений (условный, циклический, перехода).
В данном курсе будут рассмотрены основные операторы, причем некоторые, к примеру, циклические, будут представлены трех видов, но студентами должен быть освоен только один, как наиболее понятный для применения.
Оператор комментария
Комментарии на исполнение программы не влияют, но необходимы для понимания алгоритма. Поскольку программы неоднократно модернизируются, крайне важно использовать комментарии, чтобы вспомнить алгоритм и правильно изменить его.
Любая строка текста программы может заканчиваться комментарием. Комментарий в VBA начинается апострофом (") и включает любой текст, расположенный правее в строке.
К примеру,
Weight= weight+z "Увеличение весаvalue=weight*price "Новая стоимость
Оператор присваивания
Операторы присваивания - основное средство изменения состояния программы (значений переменных). Он представляет собой конструкцию, связывающую знаком = переменную (левая часть) и выражение (правая часть). Выражение состоит из операндов (имен переменных, констант, имен стандартных функций) и знаков операций (арифметических, логических, строковых, сравнения). Смысл этого оператора состоит в том, что левой части присваивается значение правой части.
Управляющие операторы
Набор управляющих операторов VBA соответствует структурированному языку программирования. В данный набор входят условные операторы и операторы цикла , что позволяет организовать процесс вычислений надежно и эффективно.
Условный оператор If Then Else End If
Это общепринятый в языках программирования оператор управления вычислениями позволяет выбирать и выполнять действия исходя из истинности некоторого условия.
Операторы VBA - понятие и виды. Классификация и особенности категории "Операторы VBA" 2017, 2018.
Эта категория Диала в ТРИЗ представлена как «принцип № 34, отброса и регенерации частей: а) Выполнившая свое назначение или ставшая ненужной часть объекта должна быть отброшена (растворена, испарена и т. д.) или видоизменена непосредственно в ходе работы. б)... .
Рис. 12.1 Расположенные объекты на форме 6. Активизируя на форме отдельно каждый объект, устанавливаем его свойство с помощью окна свойств (Properties рис. 12.2). Таким образом, интерфейс создан (рис. 12.3). Рис. 12.3. Интерфейс проекта (с... .
Составной оператор. Структурные операторы Оператор вызова процедуры Оператор безусловного перехода Оператор безусловного перехода предоставляет возможность изменять порядок выполнения... .
Иногда при решении задач возникает ситуация, когда в качестве операторов, содержащихся в ветвях, могут, в свою очередь, быть другие операторы условия. Их называют составными операторами. Причем количество вложений или, как еще говорят, уровней вложений может быть... .
Visual Basic For Application (VBA) – это сочетание одного из самых простых языков программирования и всех вычислительных возможностей табличного процессора Excel. С помощью VBA можно легко и быстро создавать разнообразные приложения, даже не являясь специалистом в области...
Операторы VBA: арифметические, логические, сравнения, присвоения
Оператор - это наименьшая способная выполняться единица кода VBA. Оператор может объявлять или определять переменную, устанавливать параметр компилятора VBA или выполнять какое-либо действие в программе.
Арифметических операторов в VBA всего 7. Четыре стандартных: сложение (+), вычитание (-), умножение (*), деление (/) и еще три:
Оператор присвоения в VBA - знак равенства. Можно записывать так:
Let nVar = 10
а можно еще проще:
nVar = 10
Во втором случае не путайте знак равенства с оператором равенства.
Выражение
nVar = 10
значит "присвоить переменной nVar значение 10", а если строка выглядит так:
If (nVar = 10)
то это значит "если значение переменной nVar равно 10".
Если переменной нужно назначить объект, то делается это другими способами.
Операторов сравнения в VBA всего 8:
Операторы сравнения всегда возвращают true или false - true, если утверждение истинно, и false, если ложно.
Немного про сравнение строковых значений:
Option Compare Text
Чуть подробнее про оператор Like. Общий его синтаксис выглядит как
Выражение1 Like Выражение2
При этом Выражение1 - любое текстовое выражение VBA, а Выражение2 - шаблон, который передается оператору Like. В этом шаблоне можно использовать специальные подстановочные символы (см. Табл. 3.1)
Табл. 3.1 Подстановочные символы для оператора LIKE
Очень часто при проверке нескольких условий используются логические операторы:
Помнить нужно про AND, OR, NOT, остальные логические операторы используются редко.
Почти в любой программе VBA используются операторы конкатенации. В VBA их два - + или &. Рекомендуется всегда использовать &, потому что:
MsgBox "Сообщение пользователю" & vUserName
Порядок применения операторов можно регулировать при помощи круглых скобок.
Итак,
And!
Это,
наверное, самый простой и нужный логический оператор среди других.
Help:
Возвращает
результат конъюнкции (логического И) для двух выражений.
Синтксис:
результат
= выражение1
And
выражение2
Т.е. результат будет истинным только в том случае, когда истинны выражение1 И выражение2. Возвращаемые оператором значения представлены в следующей таблице:
выражение1 | выражение2 | результат |
True | True | True |
True | False | False |
True | Null | Null |
False | True | False |
False | False | False |
False | Null | False |
Null | True | Null |
Null | False | False |
Null | Null | Null |
А теперь маленький пример:
Представим себе, что переменные User_Has_Computer и User_Has_Car объявлены как булевы значения и в процессе каких-нибудь действий приняли значения либо True либо False. Вы устанавливаете условие, проверяющие эти значения:
Мы же сэмулируем это сами:) - впишите куда - нибудь следующие строки:
Dim
User_Has_Car
As
Boolean
User_Has_Computer
=
True
User_Has_Car
=
True
If
User_Has_Computer
And
User_Has_Car
Then
MsgBox "Вы счастливый человек!"
End
If
При проверки данного условия на экран выскочит сообщение, извещающие, что пользователь счастливый человек, т.к. у него есть машинa И компьютер:-)! А теперь перед третьей или четвёртой строкой поставьте апостроф """ - закоменнтируйте строку. Теперь одна из переменных будет False по умолчанию. Теперь сообщение НЕ выскочит, т.к. пользователь не очень счастливый, имея машину ИЛИ компьютер...
Следующий оператор не менее простой - Or.
Help:
Выполняет
операцию логического ИЛИ (сложения) для двух выражений.
Синтаксис:
результат
= выражение1
Or
выражение2
Результат
будет истинным только в том случае, если только одно из выражений истинно.
Возвращаемые оператором значения представлены в следующей таблице:
выражение1 | выражение1 | результат |
True | True | True |
True | False | True |
True | Null | True |
False | True | True |
False | False | False |
False | Null | Null |
Null | True | True |
Null | False | Null |
Null | Null | Null |
И снова маленький пример с прежними булевыми перменными User_Has_Computer и User_Has_Car, которые в процессе каких-нибудь действий приняли значения либо True либо False.
Dim
User_Has_Computer
As Boolean
Dim
User_Has_Car
As
Boolean
User_Has_Computer
=
False
User_Has_Car
=
True
If
User_Has_Computer Or User_Has_Car
Then
MsgBox "Вы почти счастливый человек!"
End
If
При проверки данного условия на экран выскочит сообщение, извещающие, что пользователь почти счастливый человек, т.к. у него есть машинa, но нет компьютера:-|...
Оператор Not.
Help:
Выполняет
над выражением операцию логического отрицания.
Синтаксис:
результат
= Not
выражение
Т.е.
результат
стаёт
противополжным выражению
(исключая Null). Возвращаемые оператором
значения представлены в следующей таблице:
Пример:
Dim User_Has_Computer As Boolean
User_Has_Computer = False
If
Not
User_Has_Computer
Then
MsgBox "Сочувствую...:)"
End
If
Объясняю: условие If
... Then выполняется тогда, когда какое-нибудь выражение (на месте...)
равно True. Представим, что переменная User_Has_Computer
= False. Тогда строка
Not
User_Has_Computer даёт результат True и условие выполняется!
Оператор Xor.
Help:
Выполняет операцию
исключающего ИЛИ для двух выражений.
Синтаксис:
[результат
=]
выражение1
Xor
выражение2
В принципе, этот оператор
похож на Or, но это не просто ИЛИ
, а исключающее ИЛИ
. Если
одно и только одно из выражений
истинно (имеет значение True), результат
имеет значение True. А оператор Or допускает два истинных выражения
.
Результат
Пример:
Dim
User_Has_Computer
As Boolean
Dim
User_Has_Car
As
Boolean
User_Has_Computer
=
False
User_Has_Car
=
True
If
User_Has_Computer
Xor
User_Has_Car
Then
MsgBox "Вам нужна машина И компьютер!"
End
If
Здесь так же, как и в предыдущем примере условие выполняется только тогда, когда строка User_Has_Computer Xor User_Has_Car истинна (= True). А истинна она тогда и только тогда, когда только одно из условие истинно. Если оба, то условие уже не исполнится.
Оператор Eqv.
Help:
Используется
для проверки логической эквивалентности двух выражений.
Синтаксис:
результат
= выражение1
Eqv
выражение2
Тут
совсем всё просто: результат будет истинным в том случае, если оба выражения
либо истинны, либо ложны. Результат
определяется следующим образом:
Пример:
Dim
User_Has_Computer
As Boolean
Dim
User_Has_Car
As
Boolean
User_Has_Computer
=
True
User_Has_Car
=
True
If
User_Has_Computer
Eqv
User_Has_Car
Then
MsgBox "Вы или счастливый или несчастный человек!"
End
If
Здесь компьютер назовёт Вас человеком "счастливым или несчастным", т.к. условие выполняется только тогда, когда пользователь имеет и машину и компьютер или не того и не другого.
Синтаксис языка программирования - набор правил, описывающий комбинации символов алфавита, считающиеся правильно структурированной программой (документом) или её фрагментом.
Основные синтаксические принципы этого языка следующие:
Семантика языка - это смысловое значение слов. В программировании - начальное смысловое значение операторов, основных конструкций языка и т. п.
Оператор - это наименьшая способная выполняться единица кода VBA. Оператор может объявлять или определять переменную, устанавливать параметр компилятора VBA или выполнять какое-либо действие в программе.
Арифметических операторов в VBA всего 7.
Четыре стандартных: сложение (+), вычитание (−), умножение (*), деление (/), и еще три:
Оператор присваивания в VBA - это знак равенства. Можно записывать так:
Let nVar = 10
а можно еще проще:
nVar = 10
Здесь не путайте знак равенства с оператором равенства. Последнее выражение означает "присвоить переменной nVar значение 10", а если строка выглядит так: If (nVar = 10) , то это значит "если значение переменной nVar равно 10".
Операторов сравнения в VBA всего 8:
Операторы сравнения всегда возвращают True (если утверждение истинно) или False (если утверждение ложно).
Очень часто при проверке нескольких условий используются логические операторы :
Помнить нужно про And, Or, Not , остальные логические операторы используются редко.
Переменные - это контейнеры для хранения изменяемых данных. Без них не обходится практически ни одна программа. Для простоты переменную можно сравнить с номерком в гардеробе - вы сдаете в гардероб какие-то данные, в ответ вам выдается номерок. Когда вам опять потребовались эти данные, вы "предъявляете номерок" и получаете их.
Каждая переменная имеет имя. Обращение к переменной происходит по имени. Правила выбора имен в VBA едины для многих элементов (переменные, константы, функции, процедуры и т. п.):
При создании программ VBA рекомендуется определиться с правилами, по которым будут присваиваться имена объектам - соглашение об именовании. Чаще всего используется так называемое венгерское соглашение (в честь одного из программистов Microsoft, Charles Simonyi, венгра по национальности):
Тип данных относят к самым фундаментальным понятиям любого языка программирования. Тип данных определяет множество допустимых значений, которое может принимать величина (переменная или константа), и множество действий, которые можно выполнить с этой величиной.
В VBA предусмотрены следующие типы данных:
Приоритет | Операция |
1 2 3 4 5 6 7 8 9 10 11 12 |
Вызов функции и скобки ^ - (смена знака) *, / \ Mod +, – >, <, >=, <=, <>, = Not And Or Xor |
Функция | Возвращаемое значение | |||
Abs (<число>) | Модуль (абсолютная величина) числа | |||
Atn (<число>) | Арктангенс | |||
Cos (<число>) | Косинус | |||
Exp (<число>) | Экспонента, т. е. результат возведения основания натурального логарифма в указанную степень | |||
Log(<число>) | Натуральный логарифм | |||
Rnd (<число>) |
Случайное число из интервала
Если условие истинно, то выполняются операторы1, в противном случае выполняются операторы2. Допускается также использование сложного условного оператора, который записывается в виде блока: If условие1 Then операторы1 ElseIf условие2 Then операторы2 операторы3 Фамилия=.TextBox1.Text If Фамилия =”“ Then MsgBox”Вы не ввели фамилию” REM При установленном флажке номер 1 клиенту ‘предоставляется скидка 5% ‘ Сумма – количество денег, выплачиваемых клиентом ‘ Стоимость товара хранится в переменной Стоимость If UserForm1.CheckBox1.Value = True Then Сумма=Стоимость-Стоимость*0.05 Else Cумма=Стоимость 1) REM Предположим, что Тариф – это установленный тариф, а Время ‘–отработанное время. Время и тариф вводятся в поля ввода ‘соответственно вTextBox1 и TextBox2. Зарплата рассчитывается по ‘формуле Тариф*Время. Напишем программу для вывода в форму ‘рассчитанной зарплаты. Label4 – надпись, подготовленная для ‘вывода значения зарплаты If IsNumeric(TextBox1.Text)=True And _ IsNumeric(TextBox2.Text)=True Then Тариф=TextBox1.Text Время=TextBox2.Text Label4.Caption=Тариф*Время В первом примере работа ведется с пользовательской формой номер один. Переменной Фамилия присваивается содержимое поля ввода номер один. Затем осуществляется проверка, было ли что-либо введено в поле ввода (не пуста ли переменная Фамилия ). Если переменная Фамилия пуста, то на экран выводится окно сообщения. Во втором примере – первые строки, начинающиеся со слова REM и апострофов, – это комментарии, объясняющие назначения переменных. С помощью условного оператора определяется сумма, выплачиваемая клиентом. В третьем примере осуществляется проверка того, введены ли в поля ввода числа. Если в два поля введены числа, то переменным присваиваются значения полей ввода и надписи присваивается значение результата умножения тарифа на время. 1) Оператор безусловного перехода GoTo предназначен для задания перехода на указанную строку внутри программы. Синтаксис: GoTo Строка Обязательный аргумент Строка может быть любой меткой строки или номером строки. If IsNumeric(TextBox1.Text)=False Then GoTo Ошибка Ошибка: MsgBox “Ошибка при вводе чисел!” В приведенном примере выполняется проверка того, введено ли число в поле ввода номер один. Если введено не число, то осуществляется переход на строку с меткой Ошибка и на экран выводится сообщение. 2) Оператор цикла For/To/Next предназначен для программирования повторяющихся фрагментов, т.е. для описания циклических алгоритмов. Синтаксис: For переменная=M1 To M2 [Step M3] операторы M1, M2, M3 – выражения. Оператор цикла повторяет выполнение группы операторов, пока переменная (счетчик) изменяется от начального значения М1 до конечного М2 с указанным шагом М3. Если шаг не указан, то он полагается равным 1. Фамилия = Sheets(“Сотрудники”).Cells(I,1) UserForm1.ComboBox1.AddItem Фамилия В приведенном примере предполагается, что на листе «Cотрудники» в первом столбце записаны фамилии сотрудников, которые нужно внести в список поля со списком номер один пользовательской формы номер один. Алгоритм работы программы: 1) Переменной I присваивается значение 2. 2) Переменной Фамилия присваивается значение ячейки А(I,1), расположенной на листе «Сотрудники». (При первом выполнении цикла это ячейка А(2,1)) 3) В список поля со списком ComboBox1 добавляется элемент из переменной Фамилия. 4) К значению переменной I добавляется 1 (если шаг не указан, то он полагается равным 1). Выполняется проверка, не превысила ли величина I 10 (конечного значения переменной I, в примере М3=10)? Если величина I еще меньше или равна 10, то выполняются пункты 2-4, в противном случае работа цикла заканчивается. Таким образом, приведенная программа позволяет заполнить данными список поля со списком ComboBox1. Основные алгоритмы, используемые при решении Основные алгоритмы рассмотрим на следующем примере. В выполнении работы по договору участвовали сотрудники разных отделов. В таблице, на листе «Лист1» представлены данные о количестве отработанных часов каждым из сотрудников (рис.8). Рис.8.Данные о количестве отработанных часов сотрудниками фирмы |