Лабораторная работа 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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!