Лабораторная работа 3 Алгоритмический язык VBA
Цель работы: Изучить Visual Basic for Application на примере линейной программы с использованием модуля, научиться организации ввода и вывода данных с помощью с помощью диалоговых окон, и с помощью ячеек листа Excel. Изучить условный оператор IF. Изучить оператора цикла с параметрами For-Next.Изучить возможности создания и использования пользовательских форм и элементов управления.
Линейная программа. Организация ввода-вывода.
Величина – отдельный информационный объект, который имеет имя, значение и тип. Величины бывают постоянные и переменные.
Постоянная величина (константа) не изменяет своего значения в ходе выполнения алгоритма. Использование констант делает программы легче читаемыми и позволяет проще вносить изменения: отпадает необходимость многократно исправлять значения по тексту программы, т.к. достаточно ввести новое значение при определении константы.
Переменная величина (или просто переменная) может изменять значение в ходе выполнения алгоритма. Переменные задаются именами, которые определяют области памяти, в которых хранятся значения. Значениями переменных могут быть данные различных типов.
Тип данных относят к самым фундаментальным понятиям любого языка программирования. Тип данных определяет множество допустимых значений, которое может принимать величина, и множество действий, которые можно выполнить с этой величиной. Основные типы данных в VBA представлены в таблице 8.1. Обозначения типов данных является ключевыми словами языка (и выделяется после набора в редакторе VBA).
|
|
Таблица 8.1 – Основные типы данных в VBA
Тип данных | Размер (байт) | Диапазон значений |
Byte (байт) | 1 | От 0 до 255 |
Boolean (логический) | 2 | True или False |
Integer (целое число) | 2 | От -32 768 до 32 767 |
Long (длинное целое число) | 4 | От -2 1 47 483 648 до 2 1 47 483 647 |
Single (число с плавающей запятой обычной точности) | 4 | От -3.402823Е38 до-1 ,401 298Е-45 - для отрицательных значений; от 1 .401298Е-45 до 3,402823Е38 - для положительных значений |
Double (дробное число двойной точности) | 8 | От -1 ,7976931 3486232 Е308 до -4,94065645841 247 Е-324 для отрицательных значений; от 4,94065645841 247 Е-324 до 1, 7976931 3486232 Е308 для положительных значений |
Date (даты и время) | 8 | от 01. 01. 100 до 31. 12.9999 |
String (строка переменной длины) | 10 + длина строки | От 0 до приблизительно 2 миллиардов |
String (строка постоянной длины) | Длина строки | От 1 до приблизительно 65400 |
Variant | 16 | Variant может хранить любой тип данных. Если переменная не объявлена явно, то ей присваивается тип Variant. |
Над различными типами данных допустимы различные операции. В VBA имеются три основных типа операций:
· математические, выполняются над числами, их результатом являются числа;
|
|
· операции отношения, могут применяться не только к числам, их результатом является значения логического типа;
· логические, используются в логических выражениях и их результатом являются логические значения.
Операции VBA представлены в таблицах 8.2-8.5.
Таблица 8.2 – Математические операции
[Операнд 1] + [Операнд 2] | Сложение |
[Операнд 1] - [Операнд 2] | Вычитание |
-[Операнд] | Перемена знака |
[Операнд 1] * [Операнд 2] | Умножение |
[Операнд 1] / [Операнд 2] | Деление |
[Операнд 1] \ [Операнд 2] | Целочисленное деление |
[Операнд 1 Mod [Операнд 2] | Остаток от деления по модулю |
[Операнд 1] ^ [Операнд 2] | Возведение в степень |
Таблица 8.3 – Операции отношения
[Операнд 1] < [Операнд 2] | Меньше |
[Операнд 1] > [Операнд 2] | Больше |
[Операнд 1] <= [Операнд 2] | Меньше или равно |
[Операнд 1] >=[Операнд 2] | Больше или равно |
[Операнд 1] <> [Операнд 2] | Не равно |
[Операнд 1] = [Операнд 2] | Равно |
[Операнд 1] Like [Операнд 2] | Сравнение двух строковых выражений |
Таблица 8.4 –Логические операции
[Операнд 1] And [Операнд 2] | (И) логическое умножение |
[Операнд 1] Or [Операнд 2] | (Или) логическое сложение |
[Операнд 1] Xor [Операнд 2] | Исключающее Or (или) |
Not [Операнд] | Логическое отрицание |
Таблица 8.5 –Другие операции
|
|
[Строка 1] & [Строка 2] | Конкатенация (сложение) строк. Для сложения строк допустимо использование операции [Строка 1] + [Строка 2], но предпочтительнее, во избежание путаницы, применять операцию со знаком &. |
VBA выполняет операции в соответствии с их приоритетом, что обеспечивает однозначность в трактовании значений выражений.
Приоритеты операций:
1) Вызов функции и скобки
2) ^
3) - (смена знака)
4) *, /
5) \
6) Mod
7) +, –
8) >, <, >=, <=, <>, =
9) Not, And, Or, Xor
Стандартные математические функции VBA представлены в таблице 8.7
Таблица 8.7 – Математические функции
Обращение | Функция |
Abs(х) | Модуль аргумента |
Atn(x) | Арктангенс (радианы) |
Соs (x) | Косинус (x в радианах) |
Eхр(х) | ex — экспонента |
Int(x) | Целая часть х, полученная отбрасыванием дробной части |
Fix(x) | Число, округленное до ближайшего меньшего целого |
Log(x) | Натуральный логарифм |
Sin(x) | Синус (х—в радианах) |
Sqr(x) | Корень квадратный |
Tan(x) | Тангенс числа |
В VBA пользователь определяет имена переменных, функций, процедур, постоянных и других объектов. Вводимые пользователем имена должны отражать суть обозначаемого объекта так, чтобы делать программу легко читаемой.
|
|
Для того чтобы начать оперировать с любой величиной (постоянной или переменной) ее необходимо соответствующим образом описать. Важно, чтобы не только разработчик программы понимал, величины какого типа используются в программе, но и исполнитель программы (компьютер). Второе даже более важно, т.к. если компьютер не будет знать, величина какого типа используется в программе, он будет считать ее величиной универсального типа Variant и отведет для ее хранения в памяти 16 и более ячеек. Это будет приводить к неэффективному использованию памяти и замедлению работы программы. Кроме того, описание переменных и констант делает программу надежнее, убыстряет ее работу, т.к. компилятору VBA не требуется тратить время на распознавание типа неописанной величины при каждом обращении к ней.
Блок описания переменных имеет следующий синтаксис:
Dim <Имя> [As <Тип>]
Здесь Dim и As – ключевые слова VBA;
<Имя> – имя переменной, удовлетворяющее стандартным правилам именования переменных;
<Тип> – тип данных переменной (см. таблицу 1).
Примеры:
1. Dim N As Integer
– инструкция описывает переменную N типа Integer.
2. Можно объявить сразу несколько переменных:
Dim Строка As String, Число As Single
– инструкция описывает переменную Строка типа String, переменную Число типа Single.
3. Dim K1, K2 As Integer
– инструкция описывает переменную K2 типа Integer, переменную K1, тип которой не задан (по умолчанию будет приписан тип Variant).
Редактор VBA
Для входа в среду VBA Excel можно воспользоваться одним из следующих способов:
1. выполнить команду Tool (Сервис) / Macro (Макрос) / Visual Basic Editor (Редактор Visual Basic);
2. воспользоваться комбинацией клавиш <Alt>+<F11>;
3. нажать кнопку Visual Basic Editor (Редактор Visual Basic) панели инструментов Visual Basic.
Возвратиться из редактора VBA в рабочую книгу Excel можно с помощью команды Viev (Вид) / Microsoft Excel (Microsoft Excel), комбинации клавиш <Alt>+<F11> или нажатием соответствующей кнопки панели инструментов Стандарт.
Структурным элементом программы, написанной на языке VBA, является модуль – совокупность объявлений и процедур, объединенных в единое целое. По своему предназначению модули делятся на два типа: стандартные модули и модули объектов. К стандартным модулям относятся те, которые содержат макросы. К модулям объектов относятся модули, связанные с рабочей книгой, рабочими листами, формами и модули класса. Мы будем использовать только стандартные модули.
Чтобы осуществить вставку модуля необходимо находясь в среде VBA выполнить команду Insert (Вcтавить) / Module (Модуль).
Окно редактирования кода служит в качестве редактора для ввода и изменения кода внутри модуля. Каждый модуль состоит из области описания и одной или нескольких процедур. Процедура представляет собой последовательность операторов, которые часто называют программными кодами. Входящие в модуль процедуры объединены общей областью описания. В ней описываются данные и объекты, которые являются общепринятыми для процедур модуля.
При создании и редактировании кода удобно пользоваться командой Insert (Вcтавить) / Procedure (Процедуру). В появившемся окне необходимо выбрать функцию или подпрограмму и задать ее имя. После этого будут автоматически сформированы операторы начала и конца процедуры и можно переходить непосредственно к набору операторов процедуры. Для набора следующей процедуры в том же модуле необходимо повторить команду Insert (Вcтавить) / Procedure (Процедуру). Если нужно создать новый модуль повторяется команда Insert (Вcтавить) / Module (Модуль).
Проверка правописания осуществляется на этапе компиляции командой Debug (Отладка) / Compile VBAProject (компилировать). Для запуска программы требуется выполнить команду Run (Запуск) / Run Sub/UserForm (Запуск подпрограммы/UserForm) или нажать клавишу <F5> или соответствующую кнопку на панели инструментов. В появившемся окне следует выбрать имя нужной программы и щелкнуть по кнопке Run (Выполнить).
Для того чтобы сохранить или открыть созданную ранее программу используют стандартные средства Excel, например, соответствующие пункты меню Файл: Сохранить как… , Открыть.
Запуск или редактирование существующего программного кода после запуска Excel может быть осуществлен после последовательного выполнения команд: Tool (Сервис) / Macro (Макрос) / Макросы. В появившемся диалоговом окне следует указать имя процедуры и нажать кнопку, отвечающую за выполнение требуемого действия (выполнить или изменить).
Решение любой задачи имеет три части:
1. ) ввод данных;
2. ) обработка данных;
3. ) вывод результата.
Под вводом данных понимается описание всех переменных, констант и массивов, используемых в программе, а также код, обеспечивающий присвоение этим переменным вводимых данных.
Под так называемой обработкой данных понимается код, состоящий из математических выражений, которые приводят к получению результата.
Вывод результата – это код программы, который позволяет отобразить полученный результат в необходимом виде: на экране (лист Excel, форма), на принтере и т.д.
Ввод и вывод данных в VBA может выполняться несколькими способами:
· с листа Excel,
· с помощью диалоговых окон,
· с помощью пользовательской формы.
Для ввода данных с листа или вывода на лист используется объект Worksheets и его методы Range или Cells.
Метод Range использует в качестве аргументов одну или две ссылки на ячейки и возвращают объект Range. Ссылки на ячейки должны быть оформлены в стиле А1 (колонка-буква-строка-число). Ссылка на единичную ячейку, использованная в качестве аргумента, возвращает объект Range для единичной ячейки. Две ссылки на единичные ячейки возвращают объект Range для прямоугольной области, заключенной между этими двумя ячейками. Примеры ввода данных с листа и вывода их на лист представлены в таблице 8.5.
Таблица 8.5 – Метод Range для ввода–вывода данных
Строка программы | Значение |
X = Workshеets(“Лист1”).Range(“B1”).Vаlue | Присваивание переменной Х значение ячейки B1 листа Лист1. |
Workshеets(“Лист1”).Rаnge(“B1”).Value = Х | Вывод в ячейку B1 листа Лист1 значение переменной Х |
Workshеets(“Лист1”).Range(“C1”,”D6”).Value = 2 | Вывод в ячейки C1 и D6 листа Лист1 числа 2 |
Workshеets(“Лист1”).Range(“В7:С9”).Vаlue = 3 | Вывод в диапазон ячеек “В7:С9” листа Лист1 числа 3 |
Метод Cells, получая в качестве аргументов два целых числа, возвращают объект, содержащий единичную ячейку. Аргументы определяют номера строки и столбца выбранной ячейки. Примеры ввода-вывода данных на лист представлены в таблице 8.6.
Таблица 8.6 – Метод Cells для ввода–вывода данных
Строка программы | Значение |
A=Worksheets(1).Cells(1,2).Value | Переменной А присвоено значение из ячейки первой строки и второго столбца первого листа. |
Worksheets(1).Cells(2,2).Value= Х | В ячейку второй строки и второго столбца заносится значение переменной Х |
В программном коде на VBA ввод и вывод можно организовать также с помощью встроенных диалоговых окон: окна сообщений (процедура MsgBox) выводит простейшие сообщения для пользователя и окна ввода (Функция InputBox) обеспечивает ввод информации.
Функция InputBox выводит на экран диалоговое окно, содержащее сообщение, поле ввода и две кнопки OK и Cancel. Устанавливает режим ожидания ввода текста пользователем или нажатия кнопки, а затем:
· При нажатии на кнопку OK, возвращает значение типа string, содержащее текст, введенный в поле ввода.
· При нажатии кнопки Cancel возвращается пустая строка.
Синтаксис : InputBox (prompt [, title] [, default])
Аргументы:
· prompt – обязательный параметр. Любое строковое выражение, отображаемое как сообщение в диалоговом окне. Строковое значение prompt может содержать несколько строк для разделения которых допускается использование символа возврата каретки (Сhr(13)), символа перевода строки (chr (10)) или комбинацию этих символов (Chr( 13) & Chr (10))
· title – необязательный параметр. Строковое выражение, отображаемое в строке заголовка диалогового окна. Если этот аргумент опущен, в строку заголовка помещается имя приложения
· default – необязательный параметр. Строковое выражение, отображаемое в поле ввода как используемое по умолчанию, если пользователь не введет другую строку. Если этот аргумент опущен, поле ввода изображается пустым.
Пример 1: Имя=InputBоx(“Введите Ваше имя”, “Пример окна ввода”)
На экране появится окно ввода InputBox, представленное на рисунке 8.2. Переменной Имя будет присвоено значение типа String, введенное пользователем в строку ввода.
Рисунок 8.2 – Пример окна ввода
Следует учесть, что, поскольку введенные пользователем данные воспринимаются программой как текст, при вводе числовых значений необходимо преобразовать их к одному из числовых типов данных с помощью функции преобразования типа, например: СInt или CDbl и т.д.
Пример2: X=CDbl(InputBox(“Введите значение Х”,“Пример окна ввода”, “1,678”))
В результате выполнения этой операции на экране появится окно ввода, представленное на рисунке 8.3. Введенное пользователем значение будет преобразовано к типу Double и присвоено переменной Х. Если пользователь просто нажмет кнопку OK, переменной Х будет присвоено значение по умолчанию – 1.678.
Рисунок 8.3 – Пример окна ввода
Процедура MsgBox выводит на экран диалоговое окно, содержащее сообщение, устанавливает режим ожидания нажатия кнопки пользователем, а затем возвращает значение типа integer, указывающее, какая кнопка была нажата.
Синтаксис : MsgBox (prompt [, buttons] [, title])
Аргументы:
· prompt – обязательный параметр. Строковое выражение, отображаемое как сообщение в диалоговом окне;
· buttons – необязательный параметр. Числовое выражение, представляющее сумму значений, которые указывают число (таблица 8.7) и тип (таблица 8.8) отображаемых кнопок, тип используемого значка и основную кнопку. Значение по умолчанию этого аргумента равняется 0.
· title – необязательный параметр. Строковое выражение, отображаемое в строке, заголовка диалогового окна. Если этот аргумент опущен, в строку заголовка помещается имя приложения
Таблица 8.7 – Значения аргумента, определяющие отображаемые кнопки
Константа | Значение | Отображаемые кнопки |
VbOKOnly | 0 | OK |
VbOKCancel | 1 | OK, Отмена |
VbAbortRetryIgnore | 2 | Стоп, Повтор, Пропустить |
VbYesNoCancel | 3 | Да, Нет, Отмена |
VbYesNo | 4 | Да, Нет |
VbRetryCancel | 5 | Повтор, Отмена |
Таблица 8.8 – Значения аргумента, определяющие отображаемые значки
Константа | Значение | Значок сообщения |
VbCritical | 16 | |
VbQuestion | 32 | |
VbExclamation | 48 | |
VbInformation | 64 |
Пример 3: MsgBоx(“Значение переменной Х=” & X & Chr(10) & “Продолжить вычисления?”, VbYesNo, “Пример окна MsgBox”)
Если к моменту выполнения данного оператора переменная Х равнялась, например, числу 2,14587895, то на экране окно сообщений, представленное на рисунке 8.4.
Рисунок 8.4 – Пример окна сообщений
Часто процедура MsgBox используется в «минимальном» варианте – только для вывода сообщения, с одной кнопкой – OK. В этом случае аргументы не берутся в скобки.
Пример 4: MsgBоx “Значение переменной Х=” & X
Если к моменту выполнения данного оператора переменная Х равнялась, например, числу 2,14587895, то на экране окно сообщений, представленное на рисунке 8.5.
Рисунок 8.5 – Пример окна сообщений
Дата добавления: 2019-11-16; просмотров: 354; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!