Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы программирования.pdf
Скачиваний:
39
Добавлен:
13.02.2015
Размер:
785.63 Кб
Скачать

Решения задач в среде Visual Basic for Applications

Лабораторная работа № ПР1 «Создание процедур»

Цель работы: научиться создавать объект Кнопка на Рабочем листе, изменять его имя, создавать для него Процедуру-Событие в редакторе VBA, записывать линейный алгоритм в кодах VBA.

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

Visual Basic for Applications (VBA, Visual Basic для приложений) — немного упрощённая реализация языка программирования Visual Basic, встроенная в линейку продуктов Microsoft Office, а также во многие другие программные пакеты, такие как AutoCAD, WordPerfect. VBA расширяет функциональность ранее использовавшихся специализированных макро-языков, таких как WordBasic. Может использоваться для управления приложением (меню, панели инструментов, формы пользователя, диалоговые окна и тд.). VBA может также использоваться для создания импорта и экспорта различных форматов файлов.

VBA является интерпретируемым языком. Как и следует из его названия, VBA близок к Visual Basic, но может выполняться лишь в рамках приложения, в которое он встроен. Программы, написанные в VBA могут быть запущены только из того приложения, в котором они были созданы, в связи с этим они называются процедуры. Кроме того, VBA может использоваться для управления одним приложением из другого, с помощью OLE Automation (например, таким образом можно создать документ Word на основе данных из Excel).

Процедуры, константы, переменные

Описание последовательности действий, достаточно определенное для того, чтобы ее можно было выполнить при помощи некоторого автоматического устройства называют алгоритмом (algorithm). Обычно эту последовательность записывают (кодируют) с помощью некоторых формальных обозначений. При этом формальная система, предназначенная для записи алгоритмов, называется

алгоритмическим языком, сам текст алгоритма — программой, а процесс его создания — программированием.

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

Общие процедуры-программы имеют стандартный синтаксис: [Область видимости] Sub Имя_Процедуры (Список_Параметров) [раздел описаний (констант и переменных)] тело процедуры (операторы)

End Sub

[Область видимости] – указывают Public, если процедура глобальная и доступна (видна) из других модулей, либо Private, если процедура локальная и доступна (видна) только внутри данного модуля и не может быть вызвана из других модулей.

3

Sub – зарезервированное слово VBA объявляет начало процедуры, за ним задается имя_процедуры, в скобках указывается список параметров, передаваемых при вызове процедуры из программы (список параметров может отсутствовать).

Список_Параметров – список переменных, передаваемых процедуре при вызове ее из другой процедуры: Имя_Параметра As Тип_Данных, As – зарезервированное слово VBA указывает, что за ним следует тип переменной.

[раздел описаний (констант и переменных)] – раздел описания констант и переменных.

Определение: константа — это поименованная область памяти для хранения данных, значение которым присваивается при определении константы; значения остаются постоянными и не могут быть изменены во время выполнения программы.

Для определения констант служит зарезервированное слово Const. Синтаксис описания констант:

Const Имя_Константы As Тип = значение Например:

' Объявлена числовая константа для хранения

'значения числа Pi

Const Pi As Single = 3.1415926

где Const (Константа) — зарезервированное слово, которое сообщает VBA, что декларируется константа и резервируется область памяти для ее хранения; Имя_Константы — имя константы, не входящее в перечень зарезервированных слов VBA; As (Как) — зарезервированное слово, которое сообщает VBA, что определяется тип данных константы; Тип — Тип_константы определяет размер памяти занимаемой константой (прил. 2, п.1.6, табл. 4). При наборе программы в среда редактора VBA после набора зарезервированного слова As раскрывается список типов объектов и базовые Типы_Дынных. Выбранный в списке Тип_Данных устанавливается двойным щелчком мыши, нажатием клавиши <Таb> или нажатием клавиши <Enter>.

Определение: переменная — это поименованная область памяти для хранения данных, которые могут изменяться в процессе выполнения программы.

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

Синтаксис описания переменных:

Dim [Static] Имя_Переменной [ As Тип]

где Dim (Определить) — зарезервированное слово, которое сообщает VBA, что декларируется переменная и резервируется область памяти для ее хранения. Имя_Переменной — имя переменной, не входящее в перечень ключевых слов VBA. As (Как) — зарезервированное слово, которое сообщает VBA, что определяется тип данных для переменной. Тип Тип_переменной определяет размер памяти занимаемой переменной (прил. 2, п.1.6, табл. 4). Static (Статический) — зарезервированное слово VBA, позволяет сохранить

4

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

Тело процедуры (операторы) – алгоритм записанный на языке VBA.

End Sub – операторная скобка, указывающая на конец процедуры. Каждому оператору Sub обязательно соответствует End Sub.

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

Область видимости переменных и констант (три уровня):

1) До сих пор говорилось об описании констант и переменных внутри процедуры. Их также можно объявлять в верхней части модуля, которая называется областью общих объявлений. Область объявления переменных определяет область их видимости. Если переменная (константа) объявлена в процедуре, то процедура их видит и работает с ними, а другие процедуры не могут использовать эти переменные и их значения. Такие переменные называются локальными. В этом случае говорят, что переменная видна на уровне процедуры.

2)Для того, чтобы значения определенных констант и переменных были доступны всем процедурам данного модуля надо их объявить в области общих объявлений модуля (General Declarations), перед словом Dim поставить слово Private. Такие переменные и константы видимы на уровне модуля.

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

все время выполнения приложения и, следовательно потребляют системные ресурсы. Глобальные переменные объявляются в области общих объявлений модуля, перед словом Dim ставится слово Public.

Аналогично описываются в области общих объявления модуля константы: [Public|Private] Const Имя_Константы As Тип = значение

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

Инструкция Option Explicit в секции General находится в модуле до всех процедур.При использовании инструкции Option Explicit необходимо явно описать все переменные с помощью инструкций Dim, Private, Public, ReDim или Static. При попытке использовать неописанное имя переменной возникает ошибка во время компиляции

Процедуры обработки событий (Процедура_Событие)

Событие (event) – это действие над объектом (например: нажатие командной кнопки, выполнение директивы меню, открытие или закрытие таблицы Excel и т.п.) Имя Процедуры_Событи состоит из имени объекта и действия (События), которые объединяются символом подчеркивания “_”.

Синтаксис Процедуры_События:

Private Sub ИмяОбъекта_Событие ( ) тело процедуры (операторы)

5

End Sub

Общее между общей процедурой и Процедурой_Событием зарезервированное слово Sub. Принципиальное отличие общей процедуры от

Процедуры_События заключается в том, что для общей процедуры имя подбирает пользователь, а для Процедуры_Событием имя создаётся средой

VBA.

Задача 1(линейный алгоритм). Найти площадь и периметр параллелограмма, у которого заданы стороны a,b и высота h. Составить программу. (рис.2)

 

Решение

 

Этап 1. Математическая часть

 

Дано: сторона a=6, сторона b=5 и высота h=3.

 

Найти: S-? P-?

 

S = ah;

Рис.2

P = 2(a + b).

(!) Самостоятельно разработать алгоритм на

 

естественном языке и составить блок-схему.

Этап 2. Ввод данных в таблицу Excel

В ячейку А1 вводится значение стороны a, в ячейку B1 вводится значение стороны b, в ячейку C1 вводится значение высоты h.

Этап

3.

Определение

переменных

 

 

Вводятся: a, b, h ( тип Single)

Выводятся

(результат):

S, P

( тип Single).

 

 

Этап 4. Написание процедуры

На рабочем листе Лист1 при

помощи Элементов управления

создать

элемент

Кнопка

(СommandBatton1).

 

Примечание:

Если

Панель

инструментов

Элементы

управления

 

отсутствует,

необходимо

навести

курсор

мыши на свободное место в строке Панели инструментов Правой Клавишей Мыши (ПКМ) вызвать меню и выбрать пункт Элементы управления.

Навести курсор мыши на Кнопку в режиме конструктора (на панели Элементы управления нажата первая кнопка (линейка с треугольником)). Вызвать контекстное меню ПКМ Выбрать пункт Свойства закладку Alpabetic, в списке свойств выбрать Caption, справа в поле ввода удалить старое название и ввести новое название кнопки Кнопка1.

6