Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2 Курс Информатика VBA(ЗО) / Лабораторные работы / Лабораторный практикум VBA.doc
Скачиваний:
143
Добавлен:
31.05.2015
Размер:
813.57 Кб
Скачать

БЕЛОРУССКИЙ НАЦИОНАЛЬНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Энергетический факультет

А.В. Манюкевич

Лабораторный практикум

по курсу «Информатика»

«Программирование на языке VBAдляEXCEL»

для студентов специальности 1 27 01 01 «Экономика и организация производства»

Минск 2007

УДК 620.9

Рецензенты

Манюкевич А.В.

Лабораторный практикум по курсу «Информатика. Программирование на языке VBA для EXCEL» для студентов специальности 1 27 01 01 «Экономика и организация производства»

Лабораторный практикум предназначен для студентов экономических специальностей. Рассмотрены принципы автоматизации проектов в EXCELс использованием встроенного языка программированияVisualBasicforApplication.

Лабораторная работа №1

«Программирование линейных алгоритмов на языке vba»

Цель:Изучить основные методы программирования сложных функций на языкеVBA.

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

Структурным элементом программы, написанной на языке 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 (Макрос) / Макросы. В появившемся диалоговом окне следует указать имя процедуры и нажать кнопку, отвечающую за выполнение требуемого действия (выполнить или изменить).

Структура программного кода

В общем виде программа на VBAвыглядит следующим образом:

[Option Explicit]

[Private | Public] [Static] Function <Имя> ([<Список аргументов>])

[Dim <Имя> [As <Тип>]]

[Const <Имя> [As <Тип>] = <Выражение>]

[Инструкции]

[Exit Function]

[Инструкции]

End Function

В этой записи:

Option Explicit – инструкция, предписывающая явное описание всех переменных, встречающихся в программе;

Public – ключевое слово, которое указывает, что процедура доступна для всех других процедур во всех модулях;

Private –ключевое слово, указывающее, что процедура доступна для других процедур только того модуля, в котором она описана;

Static –ключевое слово, указывающее, что локальные переменные процедуры сохраняются в промежутках времени между вызовами этой процедуры;

<Имя> –имя процедуры, удовлетворяющее стандартным правилам именования;

<Список аргументов> – список переменных, представляющий аргументы, которые передаются в процедуру при ее вызове. Имена переменных разделяются запятой.

Dim <Имя> [As <Тип>] –блок описания переменных;

Const <Имя> [As <Тип>] = <Выражение> –блок описания констант;

Инструкции –любой набор любых команд VBA;

Exit Function– инструкция, выполнение которой приводит к немедленному выходу из процедуры;

Создадим пользовательскую функцию F(x) = cos2 (π*x).

Function F(x)

Pi = Atn(l) / 4

F = Cos(Pi * x)^2

End Function

Поскольку в VBA отсутствует стандартное число π, то оно вычисляется по функции:

Pi = Atn(l) / 4

По умолчанию функция попадает в раздел Определенные пользователем списка Категория окна Мастер функций EXCEL. Вызов данной функции не отличается от вызова стандартных функций EXCEL.

При создании функций пользователя полезно знать, какие встроенные математические функции имеются в VBA. На самом деле, таких функций со­всем не много.

Таблица 1- Основные математические функции VBA

Функция

Возвращаемое значение

Abs(number)

Абсолютное значение числа.

Аtn (number)

Арктангенс

Сos (number)

Косинус

Exp(number)

Экспонента, т.е. результат возведения основания натурального логарифма в указанную степень

Log(number)

Натуральный логарифм.

Rnd(number)

Случайное число из интервала [1,0]. Если number меньше нуля, то Rnd возвращает каждый раз одно и то же число. Если number больше нуля или опущено, то Rnd возвращает следующее случайное число в последовательности. Если number равняется нулю, то Rnd возвращает случайное число, полученное при предыдущем вызове этой функции. Перед вызовом функции Rnd используйте оператор Randomize.

Sgn (number)

Знак числа. Если число больше 0, то функция возвращает значение 1, если меньше, то -1. И если число равно 0, то функция возвращает 0.

Sin (number)

Синус

Sqr(number)

Квадратный корень числа

Tan(number)

Тангенс

Fix(number),

Int (number)

Обе функции отбрасывают дробную часть числа и возвращают целое значение. Различие между данными функциями состоит в том, что для отрицательного значения параметра (number) функцияIntвозвращает ближайшее отрицательное целое число, меньшее либо равное указанному, аFix– ближайшее отрицательное целое число, большее либо равное указанному

Типы данных

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

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

Таблица 2- Типы данных

Тип данных

Значения

Размер, байт

Byte (байт)

От 0 до 255

1

Boolean (логический)

True или False

2

Integer (целое)

От -32 768 до 32 767

2

Long (длинное целое)

От -2 147 483 648 до 1 147 483 647

4

Single (с плавающей точкой обычной точности)

От -3,402823 Е38 до -1,401298 Е-45 для отрицательных значений.

От 1,401298 Е-45 до 3,402823 Е38 для положительных значений

4

Double (с плавающей точкой двойной точности)

От -1,79769313486232 Е308 до

-4,94065645841247 Е-324 для отрицательных значений,

от 4,94065645841247 Е-324 до 1,79769313486232 Е308 для положительных значений

8

Currency (денежный)

От -922 337 203 685 477,5808 до

922 337 203 685 477,5807

8

Decimal (масштабируемое целое)

±79228162514264337 593 543 950 335 без дробной части; ±7,9228162514264337593543950335 с 28 знаками справа от запятой, минимальное ненулевое значение равняется ±0,0000000000000000000000000001

14

Date (даты и время)

От 1 января 100 г, до 31 декабря 9999 г.

8

Object (объект)

Любой указатель объекта

4

String (строка переменной длины)

От 0 до приблизительно 2 миллиардов

10 + длина строки

String (строка постоянной длины)

От 1 до приблизительно 65 400

Длина строки

Variant (числовые подтипы)

Любое числовое значение (до границ диапазона для типа Double)

16

Variant (строковые подтипы)

Как для строки (String) переменной длины

22 + длина строки

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

Диапазон каждого элемента определяется его типом данных

Размер определяется элементами

Переменные типа Byte, Boolean, Integer, Long, Currency, Decimal, Single, Double и Date в VBA называются числовыми переменными. Числовыми переменными являются также переменные подтипов Empty, Integer, Long, Single, Double, Currency, Decimal, Date, Error, Boolean и Byte типа Variant.

Переменные типа String относят к строковым переменным. Этот тип переменных может содержать буквы, цифры пробелы, знаки пунктуации и специальные символы.

VBA не требует обязательного объявления переменных. В случае если переменная не была объявлена, ей автоматически присваивается тип Variant. Этот тип является универсальным и может содержать данные различных подтипов: Integer, Long, String и т. п.

Соглашение об именах констант и переменных

При написании программ на VBA принято придерживаться определенных пра­вил при задании имен констант и переменных в зависимости от их типа. Напри­мер, при объявлении переменной типа Integer вначале имени ставится специальный префикс int. Префиксы, используемые в именах переменных в зависимости от их типа, представлены в таблице 3.

Таблица 3 - Префиксы, используемые в именах переменных в зависимости от их типа

Тип данных

Префикс

Boolean

bin

Byte

byt

Currency

cur

Date (Time)

dtm

Double

dbl

Error

err

Integer

int

Long

lng

Object

obj

Single

sng

String

str

Типы данных, определенные пользователем

udt

Variant

vnt

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