![](/user_photo/2706_HbeT2.jpg)
- •Кафедра информатики и тсо
- •С помощью Visual Basic for Applications
- •Введение
- •I. Постановка задачи
- •II. Этапы разработки приложения
- •III. Особенности интерфейса vba
- •IV. Некоторые сведения о языке Visual Basic for Applications
- •4.1. Основные понятия
- •4.2. Типы данных
- •Типы данных vba
- •4.3. Правила присвоения имен в vb
- •4.4. Проверка синтаксических ошибок
- •V. Пример создания приложения
- •Соответствие информационных объектов и элементов проекта
- •VI. Тематика индивидуальных заданий
- •VII. Библиографический список
- •Приложение 1 Примеры некоторых типовых программных решений Пример использования инструкции Do…Loop
- •Id As Integer ' Помещает это описание
- •Генерация случайного целого числа
- •Приложение 2 Краткий справочник по объектам, методам, свойствам и функциям, использованным в примерах
- •Автоматизация Excel-приложений с помощью Visual Basic for Applications Учебно-методическое пособие по курсу
- •Составитель в.Б. Тарасюк
- •305000, Г. Курск, ул. Радищева, 33 (тел. 56-84-60)
4.3. Правила присвоения имен в vb
При присвоении имен процедурам, константам, переменным и аргументам в модулеVisual Basic используются следующие правила:
имена должны начинаться с буквы;
имя не может содержать пробел, точку (.), восклицательный знак (!) или символы @, &, $, #;
имена не должны содержать более 255 символов;
как правило, не используются имена, совпадающие с названиями функций, инструкций и методов языка Visual Basic, так как при этом прекращается выделение в тексте одноименных ключевых слов языка (Чтобы использовать встроенные функции языка, инструкции или методы, имена которых конфликтуют с присвоенным пользователем именем, их необходимо явно указывать. Для этого перед именем встроенной функции, инструкции или метода, должно стоять имя связанной с ними библиотеки типов. Например, если имеется переменная с именем Left, то функция Left должна вызываться как VBA.Left.);
не допускается использование повторяющихся имен на одном уровне области определения. Нельзя, например, описать две переменных с именем age в одной процедуре. Однако описание личной переменной age и переменной уровня процедуры age внутри одного модуля допустимо.
4.4. Проверка синтаксических ошибок
Если после набора строки и нажатия клавиши ENTER строка выделяется красным цветом (может появиться также сообщение об ошибке), необходимо выяснить, что неправильно в данной инструкции, и исправить ее.
V. Пример создания приложения
Рассмотрим последовательность и содержание операций при создании приложения, автоматизирующего работу билетной кассы.
Разрабатываемое приложение предназначено для автоматизации рабочего места оператора-кассира по продаже билетов на автобус междугородного сообщения. Приложение должно хранить информацию о маршрутах, времени отправления и времени в пути, тарифах, льготах и типе автобуса, а также наличии свободных мест; формировать билет по выбранному маршруту, с расчетом его цены, с учетом имеющейся льготы; вести оперативный учет свободных мест; обеспечивать простую перенастройку реквизитов предприятия-оператора.
Поставленные в общем виде требования должны быть уточнены и сформулированы в виде задач:
хранение информации о маршрутах, времени отправления, времени в пути, тарифах, льготах, типах автобусов и свободных местах с возможностью ее оперативного обновления (объем хранимой информации ограничивается текущими сутками);
хранение информации о реквизитах предприятия-оператора;
хранение бланка билета;
автоматизированное формирование билета в соответствии с выбранным маршрутом, имеющейся льготой, временем отправления с расчетом цены и только при наличии свободных мест;
распечатывание билета или пустого бланка билета;
автоматическое обновление оставшихся свободных мест в процессе работы приложения;
автоматизированная реинициализация системы в начале рабочего дня.
Предварительный анализ задач, решаемых приложением, позволяет выделить две группы данных: условно-постоянные данные и оперативные данные. К первой группе относится информация о реквизитах места установки приложения и об имеющихся льготах. К оперативным данным относятся сведения о маршрутах движения, тарифах, наличии свободных мест. Итак, первая группа включает полное название предприятия, номер кассы, список наименований льгот и их размер. Вторая группа включает номер маршрута, пункт назначения, время отправления, стоимость проезда, расстояние, время в пути, количество свободных мест (для простоты, возможность продажи билетов до промежуточных пунктов не предусматривается). Помимо хранимых данных для формирования билета в диалоговом режиме следует ввести фамилию пассажира и наименование документа, подтверждающего льготу.
Совместный анализ задач и используемых данных позволяет представить структуру разрабатываемого приложения и представить ее в виде, показанном на рис. 3.
Рис.3. Блок-схема информационной модели приложения
После уточнения информационной модели создаются макеты таблиц для хранения данных и форма билета. Таблица, предназначенная для хранения данных о маршрутах, помещается на рабочем листе «Расписание». Макет этой таблицы приведен на рис. 4.
|
A |
B |
C |
D |
E |
F |
G |
1 |
Пункт назначения |
Рейс |
Время отправления |
Время в пути |
Тариф |
Место |
Свободных мест |
2 |
Воронеж |
24 |
07:30 |
5 |
110 |
19 |
22 |
3 |
Воронеж |
33 |
12:00 |
5 |
110 |
5 |
36 |
4 |
Белгород |
55 |
8:20 |
2 |
55 |
8 |
33 |
5 |
Белгород |
74 |
11:50 |
3 |
55 |
5 |
34 |
6 |
Орел |
55 |
13:45 |
4 |
50 |
39 |
2 |
7 |
Железногорск |
76 |
15:00 |
2 |
70 |
0 |
0 |
8 |
Москва |
55 |
13:05 |
9 |
250 |
0 |
0 |
9 |
Москва |
45 |
19:30 |
9 |
220 |
|
23 |
10 |
Харьков |
67 |
12:40 |
5 |
170 |
|
27 |
11 |
|
|
|
|
|
|
|
12 |
|
|
|
|
|
|
|
13 |
|
|
|
|
|
|
|
Рис.4. Фрагмент таблицы «Расписание»
Таблица для хранения реквизитов предприятия размещается на рабочем листе «Реквизиты» и выглядит, как показано на рис. 5.
|
A |
B |
C |
D |
E |
F |
G |
1 |
Наименование предприятия |
Центральный автовокзал |
|
|
|
|
|
2 |
Город |
Курск |
|
|
|
|
|
3 |
Касса № |
4 |
|
|
|
|
|
4 |
|
|
|
|
|
|
|
Рис.5. Фрагмент рабочего листа «Реквизиты»
Таблица для хранения сведений о льготах и их размерах размещена на рабочем листе «Льготы» и показана на рис.6.
|
A |
B |
C |
D |
Е |
F |
1 |
Дети до 9 лет |
50% |
0.5 |
детский |
|
|
2 |
Дети до 16 лет |
25% |
0.25 |
детский |
|
|
3 |
Ветераны |
50% |
0.5 |
льготный |
|
|
4 |
Инвалиды |
70% |
0.7 |
льготный |
|
|
5 |
Военнослужащие |
60% |
0.6 |
|
|
|
6 |
|
|
|
|
|
|
Рис.6. Фрагмент рабочего листа «Льготы»
Примерная форма заполненного бланка билета размещена на рабочем листе “Билет” и показана на Рис.7.
|
A |
B |
C |
D |
E |
F |
G |
|
1 |
|
Билет |
|
|
|
|
|
|
2 |
Центральный автовокзал |
|
|
|
||||
3 |
г. Курск |
|
|
|
|
|
|
|
4 |
Касса № |
2 |
|
|
|
|
|
|
5 |
|
|
|
|
|
|
|
|
6 |
Пункт назначения |
Москва |
|
|
|
|
||
7 |
Время отправления |
12:20 |
|
|
|
|
||
8 |
Время в пути |
9 час |
|
|
|
|
||
9 |
Тип |
полный |
|
|
|
|
||
10 |
Место № |
|
21 |
|
|
|
|
|
11 |
Стоимость |
|
220 р. |
|
|
|
|
|
12 |
Дата продажи |
22/11/02 |
|
|
|
|
||
13 |
Время продажи |
09:44 |
|
|
|
|
||
14 |
|
|
|
|
|
|
|
|
15 |
|
|
|
|
|
|
|
Рис.7. Фрагмент рабочего листа “Билет”
Следующим шагом является создание диалоговой формы. Для этого в Excel выбрать меню Сервис – Макрос – Редактор Visual Basic. Затем в среде Visual Basic выбрать пункт Insert – UserForm (Вставка – Форма). Поместить на форму элементы управления: кнопки, списки, поля ввода и т.п., необходимые для связывания информационных объектов приложения. Общий вид формы показан на рис. 8.
Рис.8. Диалоговая форма
Для вывода диалоговой формы непосредственно из среды Excel необходимо написать специальный модуль. В меню Insert выбрать пункт Module (Модуль). В открывшемся окне модуля написать:
Sub Bilet ()
UserForm1. Show
End Sub
После закрытия окна модуля и возвращения в среду Excel выбрать пункт Сервис – Макрос – Макросы. В списке открывшегося окна макросов появится строка с именем вновь созданного модуля Bilet. Щелчок мыши по кнопке «Открыть» приведет к появлению диалоговой формы UserForm1.
Следующий шаг – программирование процедур обработки событий, составляющих макрос, автоматизирующий приложение. Перед тем, как приступить непосредственно к программированию, рекомендуется составить таблицу соответствия содержимого текстовых полей формы и столбцов рабочих листов. Для рассматриваемого примера это соответствие отражено в таблице 2.
Таблица 2