Студопедия — Оператор присваивания
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

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






Оператор присваивания выглядит, как привычный знак «=». Синтаксис:

Имя_переменной = Выражение

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

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

- Имя переменной начинается с буквы.

- За буквой следует любая комбинация букв, цифр, и символов подчеркивания.

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

- Имя не может превышать 255 символов в длину.

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

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

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

При записи выражения могут использоваться следующие группы операций:

1. Арифметические операции. Для арифметических операций приняты обозначения:

+ сложение;

– вычитание;

* умножение;

/ деление;

^ возведение в степень;

\ целочисленное деление (отбрасывает дробную часть);

Mod деление по модулю. N1 Mod N2 делит N1 на N2, возвращая остаток от деления.

2. Операции сравнения. Операции сравнения иногда называют операторы отношения. Их применяют для формирования условия выполнения некоторой последовательности операций. Результат выполнения оператора сравнения принимает только два значения: True (истина) и False (ложь). Принятые обозначения:

= равно;

< > не равно;

< меньше;

> больше;

< = меньше или равно;

> = больше или равно.

3. Конкатенация строк. Основной знак для операции слияния (конкатенация) текстовых строк – амперсанд &.

4. Логические операции. Логические операции используются при формировании условий для записи логических выражений.

AND – логическое «И». Результат принимает значения «истина», если истинны оба операнда.

OR – логическое «ИЛИ». Результат принимает значение «истина», если хотя бы один из операндов имеет значение «истина».

NOT – отрицание. Значение операнда меняется на противоположное.

Операции имеют определенный приоритет (старшинство) выполнения (таблица 2).

 

Таблица 2 Приоритеты операций

Операция Приоритет Операция Приоритет
^   Mod  
NOT   +  
*   -  
/   &  
\      

 

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

Disct=(S - P)/(dt)^2

Сначала вычисляется разность S - Р, затем переменная dt возводится в степень 2, после этого вычисляется частное от деления; результат присваивается переменной Disct.

 

2. Условные операторы. Существует несколько вариантов записи оператора If. Синтаксис 1 (If…Then):

If Логич_выражение Then Оператор

Вычисляется значение логического выражения, если оно принимает значение «истина», то выполняется Оператор. В противном случае сразу выполняется инструкция в следующей строке. Синтаксис 2 (If…Then…Else):

If Логич_выражение Then

Операторы_1 Else

Операторы_2

End If

Вычисляется значение логического выражения, если оно принимает значение «истина», то выполняется группа Операторы_1. В противном случае выполняется группа Операторы_2. Указанные группы операторов могут содержать внутри себя другие операторы If.

Для последовательной проверки нескольких условий удобно использовать инструкцию If…ElseIf. Синтаксис 3:

If Логич_выражение_1 Then

Операторы_1 ElseIf Логич_выражение_2 Then

Операторы_2 ………. Else

Операторы

End If

Если первое логическое выражение истинно, то выполняется соответствующая ему группа операторов после Then, иначе проверяется второе логическое выражение и, если оно истинно, выполняется соответствующая ему группа операторов и.т.д. Если ни одно из логических выражений не примет значение «истина», то выполняется группа операторов после Else.

 

3. Оператор Select Case. Для выбора из большого количества возможных действий можно использовать инструкцию Select Case. Простейший вариант записи инструкции:

Select Case Выражение

Case Значение_выражения_1

Операторы_1

Case Значение_выражения_2

Операторы_2

……………………………….

Case Else

Операторы_Else

End Select

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

Всегда выполняется только один из разделов Case.

Возможны более сложные варианты записи Case, когда вместо одного значения переменной указывается список значений, диапазон значений, операции сравнения (например, Case Is > 100).

 

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

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

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

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

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

 

Цикл For…Next. Данный цикл следует использовать, если требуется организовать повторение операций заданное число раз.

For переменная_цикла = нач_значение To конечн_значение [Step шаг]

Операторы

Next переменная_цикла

Переменная_цикла – любая числовая переменная (чаще всего переменная, принимающая целочисленные значения).

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

При выполнении цикла переменной цикла присваивается начальное значение. Затем выполняются все операторы тела цикла. Далее значение переменной цикла изменяется на величину шага и полученное значение сравнивается с конечным значением переменной. Если конечное значение не достигнуто, то вновь выполняются все инструкции тела цикла. Когда значение переменной цикла превысит конечное значение, то управление передается инструкции, следующей за ключевым словом Next.

Пример: Вычисление суммы чисел по принципу накопления суммы в некоторой переменной. Рассмотрим фрагмент кода процедуры:

‘ Обозначим через S вычисляемое значение суммы

‘ Начальное значение суммы S = 0

For I=1 ТО 150

S = S+I Next

I

В данном примере вычисляется сумма чисел от 1 до 150 и результат вычисления сохраняется в переменной S. Вычисление происходит следующим образом: первоначально значение суммы равно нулю. Затем начинает работать цикл. Переменная цикла принимает значение 1 и оно добавляется к старому значению суммы, а результат записывается снова в переменную S (строка 4).

Далее переменная цикла принимает следующее значение, равное двум, и операция повторяется, т.е. сумма как бы «накапливается» в переменной S.

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

For I = 2 To 150 Step 2 для суммирования четных чисел;

или

For I = 1 To 150 Step 2 для суммирования нечетных чисел.

 

Цикл с проверкой условия. Циклической структурой, позволяющей реализовать проверку перед началом выполнения тела цикла, является оператор Do While.

Do While логическое_выражение

Операторы

Loop

Логическое_выражение – это допустимое логическое выражение, которое задает условие, при котором будет выполняться тело цикла. Данный цикл работает, пока значение выражения истинно. Когда логическое выражение примет значение False, управление передается оператору, следующему за ключевым словом Loop, т.е. цикл завершается. В качестве логического выражения можно использовать логическую переменную, принимающую значения True или False.

Оператор Do While позволяет создавать циклы, повторяющиеся заранее неизвестное число раз.

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

Для немедленного завершения цикла For…Next используется инструкция Exit For. Для немедленного завершения цикла Do используется инструкция Exit Do.

Описание типа переменных

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

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

Dim переменная As тип[, переменная As тип, ….]

Возможные типы данных приведены в таблице 3.

 

Таблица 3 Типы данных VBA

Имя типа данных Размер в байтах Описание
Byte   Положительные числа от 0 до 255
Boolean   Логические значения True или False
Date   Комбинация даты и времени. Дата от 1.01.100 до 31.12.9999. Время от 00: 00: 00 до 23: 59: 59
Double   Отрицательные от –1.79× 10308 до –4.9× 10-324 Положительные от 4.9× 10-324 до 1.79× 10308
Integer   Числа от –32768 до 32767
Long   Числа от –2147483648 до 2147483647
Object   Используется для доступа к любому объекту VBA. Хранит адрес объекта.
Single   Отрицательные от –3.4× 1038 до –1.4× 1045 Положительные от 1.4× 1045 до 3.4× 1038
String 1 байт на символ Текст. Может содержать до 2 миллионов символов.
Variant 16 байт+1 байт на символ Служит для хранения данных любого типа

 

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

Переменная типа Variant может неправильно обрабатывать дату, полученную с листа Excel, если дата не была отформатирована на листе одним из стандартных форматов даты. Однако, она будет правильно воспринята переменной типа Date. Аналогично, при записи на рабочий лист, дата не будет воспринята правильно из переменной типа Variant.

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

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

Функции MsgBox и Inputbox

Для организации взаимодействия с пользователем в VBA служат функции MsgBox и InputBox.

Функция MsgBox позволяет вывести на экран окно сообщения с заданной комбинацией кнопок. Общая форма записи:

MsgBox сообщение[, кнопки][, заголовок][, HelpFile][, Context]

Сообщение – текстовая константа или переменная.

Кнопки – комбинация специальных констант VBA, определяющая состав кнопок, отображаемых в окне.

Заголовок – текстовая константа или переменная, задающая строку заголовка окна.

HelpFile – строковое выражение, содержащее имя файла помощи, созданного компилятором Windows Help File.

Context число, соответствующее тематическому разделу в файле помощи. Аргументы HelpFile и Context указываются только вместе.

Единственным обязательным аргументом данной функции является текст сообщения. Например:

MsgBox “Данные успешно записаны”

Данная инструкция отобразит на экране окно, представленное на рисунке 3.

 

Рис. 3. Простейшее сообщение

 

По умолчанию окно содержит кнопку «ОК» и заголовок «Microsoft Excel».

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

MsgBox “Данные” & vbNewLine & “успешно” & vbNewLine & “записаны”

Данная инструкция отобразит окно, представленное на рисунке 4 (сравните с окном на рисунок 3).

 

Рис. 4. Перенос текста по строкам

 

Кроме того, константа vbTab (табуляция) соответствует нажатию клавиши < Tab> на клавиатуре. Этот символ можно включать в строки для выравнивания текста или размещения его по колонкам. Например:

Message = " Первая" & vbTab & " строка" & vbTab & " данных" & vbNewLine

Message = Message & " Еще" & vbTab & " строка" & vbTab & " данных"

MsgBox Message

Рис. 5. Использование табуляции

 

Используя аргументы «кнопки» и «заголовок», можно сформировать более интересные окна сообщений. Рассмотрим возможные значения аргумента «кнопки». Как уже отмечалось, состав кнопок устанавливается специальными константами VBA, описание которых приведено в таблице 4.

 

Таблица 4 Константы VBA для установления кнопок

Константа Кнопки
vbOKOnly Только кнопка OK
vbOKCancel Кнопки OK и Отмена
vbAbortRetryIgnore Кнопки Стоп, Повтор, Пропустить
vbYesNoCancel Кнопки Да, Нет и Отмена
vbYesNo Кнопки Да, Нет
vbRetryCancel Кнопки Повтор и Отмена

 

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

 

Таблица 5 Константы для установления пиктограмм

Константа Описание Пиктограмма
vbCritical Значок критической ошибки
vbQuestion Знак вопроса
vbExclamation Восклицательный знак
vbInformation Знак информационного сообщения

 

Если окно сообщения содержит более одной кнопки, то пользователь может указать, какая кнопка должна быть установлена по умолчанию. Тогда при нажатии «Enter» будет выполняться действие, предусмотренное вами для данной кнопки. Соответствующие константы указаны в таблице 6.

 

Таблица 6 Константы, определяющие положение фокуса в диалоговом окне

Константа Описание
VbDefaultButton1 По умолчанию выделена первая кнопка
VbDefaultButton2 По умолчанию выделена вторая кнопка
VbDefaultButton3 По умолчанию выделена третья кнопка
VbDefaultButton4 По умолчанию выделена четвертая кнопка

 

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

Sub sample_1()

MsgBox " Фильтровать? ", vbOKCancel + vbQuestion + vbDefaultButton2, _

" Отбор данных"

MsgBox " Отбор данных произведен", vbOKOnly + vbInformation, _

" Отбор данных"

MsgBox " Ошибка в данных! ", vbOKOnly + vbCritical, " Отбор данных"

MsgBox " Ошибка в данных! ", vbCritical + vbAbortRetryIgnore, _

" Отбор данных"

End Sub

 

Рис. 6. Примеры окон сообщений

 

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

Переменная = MsgBox(сообщение, кнопки, заголовок)

Значения, возвращаемые функцией MsgBox, представлены в таблице 7.

 

Таблица 7. Значения, возвращаемые функцией MsgBox

Константа Значение Кнопка Константа Значение Кнопка
vbOK   OK vbIgnore   Пропустить
vbCancel   Отмена vbYes   Да
vbAbort   Стоп vbNo   Нет
vbRetry   Повтор      

 

Например, чтобы завершить выполнение макроса, если пользователь выбрал кнопку «Отмена», можно записать инструкцию:

If answer = 2 Then Exit Sub

или

If answer = vbCancel Then Exit Sub

где answer – значение, возвращенное MsgBox.

При указании файла помощи в окно необходимо добавить кнопку Справка, что выполняется добавлением в аргумент «кнопки» константы vbMsgBoxHelpButton.

Для организации ввода данных в режиме диалога с пользователем используется функция InputBox, отображающая на экране окно, всегда содержащее кнопки «ОК» и «Cancel» и поле для ввода данных. Общий вид записи:

s = InputBox(сообщение[, заголовок][, знач_по_умолч][, X][, Y][, HelpFile, Context)

Сообщение – символьная константа или переменная длиной до 230 символов.

Заголовок – символьная константа или переменная, содержащая текст заголовка окна.

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

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

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

Значения X и Y измеряются в твипах, один твип приблизительно равен 0.0007 дюйма.

Значения необязательных аргументов HelpFile и Context аналогичны аргументам функции MsgBox. При определении файла помощи в окно автоматически будет добавлена кнопка «Справка».

Например, инструкция

S = InputBox(“Введите Ваше Имя”, “Регистрация”)

отобразит на экране окно, показанное на рисунке 7.

 

Рис. 7. Пример окна ввода

 

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

 

Рис. 8. Поле ввода содержит значение, установленное по умолчанию

 

Переменная S будет содержать текстовое значение, введенное пользователем. Если пользователь выбрал кнопку «Cancel», то функция возвращает строку нулевой длины. В данном случае завершение работы макроса может быть записано в виде:

If S = ”” Then Exit Sub

Обратите внимание – внутри кавычек пробела нет! Так записывается строка нулевой длины.

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

При анализе ответа пользователя следует помнить, что сравнение текстовых строк выполняется посимвольно, т.е. строки «Пример» и «пример» – это две разные строки, т.к. первые символы введены в разных регистрах. В этом случае можно воспользоваться встроенными функциями VBA для работы со строками. Перечень функций VBA, сгруппированных по категориям, можно получить, если открыть окно просмотра объектов в редакторе VBA, нажав клавишу F2. Далее в списке «Project/Library» выберите «VBA». В списке «Classes» показаны различные категории объектов, функций, процедур и констант, определенных VBA. Найдите нужную категорию функций (Conversion (преобразование типа), DateTime (дата и время), Information (информационные), Math (математические) или Strings (текстовые)). Список функций указанной категории отобразится в соседнем поле. Щелкните на кнопке со знаком вопрос, чтобы получить справку по выделенной функции. Краткая информация о функции отображается внизу окна.

 

 







Дата добавления: 2014-12-06; просмотров: 797. Нарушение авторских прав; Мы поможем в написании вашей работы!



Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

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

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

ТРАНСПОРТНАЯ ИММОБИЛИЗАЦИЯ   Под транспортной иммобилизацией понимают мероприятия, направленные на обеспечение покоя в поврежденном участке тела и близлежащих к нему суставах на период перевозки пострадавшего в лечебное учреждение...

Кишечный шов (Ламбера, Альберта, Шмидена, Матешука) Кишечный шов– это способ соединения кишечной стенки. В основе кишечного шва лежит принцип футлярного строения кишечной стенки...

Принципы резекции желудка по типу Бильрот 1, Бильрот 2; операция Гофмейстера-Финстерера. Гастрэктомия Резекция желудка – удаление части желудка: а) дистальная – удаляют 2/3 желудка б) проксимальная – удаляют 95% желудка. Показания...

Стресс-лимитирующие факторы Поскольку в каждом реализующем факторе общего адаптацион­ного синдрома при бесконтрольном его развитии заложена потенци­альная опасность появления патогенных преобразований...

ТЕОРИЯ ЗАЩИТНЫХ МЕХАНИЗМОВ ЛИЧНОСТИ В современной психологической литературе встречаются различные термины, касающиеся феноменов защиты...

Этические проблемы проведения экспериментов на человеке и животных В настоящее время четко определены новые подходы и требования к биомедицинским исследованиям...

Studopedia.info - Студопедия - 2014-2024 год . (0.009 сек.) русская версия | украинская версия