Смекни!
smekni.com

Объектно-ориентированное программирование на VBA в среде Excel (стр. 2 из 3)

5. Операторы организации циклов

В каждом языке для программирования алгоритмов циклической структуры существует некоторый набор операторов организации циклов. Цикл – это последовательность инструкций (операторов), которые программа выполняет многократно. Последовательность многократно выполняемых инструкций образуют область цикла. Для управления количеством повторений цикла анализируется некоторое условие и принимается решение о продолжении выполнения цикла или его завершения.

Различают 2 типа циклов:

- циклы со счётчиком – заданным числом повторений;

- циклы с условием – неопределённым числом повторений.

Выбор определённого вида цикла зависит от алгоритма решения задачи и реализуется в VBA с помощью соответствующих управляющих инструкций (операторов).

Наиболее простой и понятной является задача, в которой количество повторений группы инструкций известно заранее до момента начала выполнения циклов. В таких случаях целесообразно использовать инструкцию организации цикла со счётчиком For...Next, который имеет следующее правило записи:

ForСчётчик = Начальное значениеToКонечное значение[StepШаг]

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

[ExitFor]

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

Next[Счётчик]

Инструкция For...Next содержит следующие элементы:

For – ключевое слово начала цикла; Счётчик – числовая переменная, используемая в качестве счётчика; Начальное значение – начальное значение переменной Счётчик циклов, которое может быть задано числовым значением, переменной или выражением; Конечное значение – конечное значение переменной Счётчик циклов; StepШаг – необязательная фраза, используемая для задания числового значения шага, на которое изменяется счётчик при каждом выполнении тела цикла; инструкции – составляющие область цикла инструкции, которые выполняются заданное число раз; ExitFor – инструкция досрочного выхода из цикла; Next – ключевое слово, завершающее оператор организации цикла.

Во многих алгоритмах нельзя заранее определить количество повторений цикла и условие окончания выхода формируется и проверяется в ходе вычислений. В этих случаях организуются циклы второго типа – циклы с условием, которые подразделяются на 2 типа:

-циклы с предусловием

-циклы с постусловием.

Организовать выполнение циклов неопределённое число раз возможно с помощью нескольких операторов. Один из них – Do...Loop, который имеет 4 модификации и организуется с помощью следующих конструкций: 1.Цикл с предусловием –

Do [While/Untilусловие]

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

[ExitDo]

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

Loop

2.Цикл с постусловием –

Do

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

[ExitDo]

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

Loop[While/Untilусловие].

Оператор Do...Loop содержит следующие элементы: Do – ключевое слово начала цикла; While/Until – ключевое слово, определяющее условие повторения цикла; условие – выражение, формирующее условие выполнения цикла и возвращающее значение логического типа(Trueили False); инструкции - составляющие область цикла инструкции; ExitDo – инструкция альтернативного выхода из цикла; Loop – ключевое слово завершения оператора цикла.

6. Процедуры и встроенные функции организации диалога

Решение практически любой задачи, а также составления программы, целесообразно разбивать на отдельные логически завершённые фрагменты. Все языки программирования содержат в себе 2 инструмента структурирования программы – подпрограммы-процедуры и подпрограммы-функции. В данной работе используются процедуры. Процедура – последовательность совместно выполняемых инструкций, имеющая имя. Процедуры занимают центральное место в VBA программировании и подразделяются на несколько типов. Один из них – процедура пользователя, которая имеет следующую конструкцию:

[Static,Public,Private] SubИмя Процедуры [(Список_Аргументов)]

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

[ExitSub]

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

EndSub

Процедура пользователя содержит элементы: Sub – ключевое слово, соответствующее началу конструкции определения процедуры; Имя Процедуры – обязательный элемент, удовлетворяющий принятым в языке правилам формирования имён переменных; Список_Аргументов – список разделённых запятыми данных, передаваемых в процедуру или возвращаемых ею при вызове подпрограммы Sub; ExitSub – инструкция немедленного выхода из процедуры Sub; инструкции – необязательный элемент, любая группа инструкций, выполняемых в процедуре Sub.

Для организации ввода и вывода информации в процедурах VBA применяются 2 стандартные диалоговые функции. Одна из них – InputBox создаёт окно ввода данных, вторая – MsgBox формирует достаточно мощное окно сообщений. В данной работе использовалась функция InputBox, которая выводит на экран диалоговое окно, содержащее сообщение, текстовое поле ввода информации пользователя и 2 управляющие кнопки. При этом прерывается выполнение работающей процедуры и устанавливается режим ожидания ввода текста пользователем или нажатия одной из кнопок. Синтаксис этой функции: InputBox(сообщение[,заголовок] [, текст_по_умолчанию]), где сообщение – текст в диалоговом окне; заголовок – строковое выражение, отображаемое в строке заголовка диалогового окна; текст_по_умолчанию - строковое выражение, отображаемое в поле ввода в момент вывода окна на экран.

7. Визуальные элементы управления. Экранная форма пользователя

Визуальные элементы управления впервые были применены в первой версии VisualBasic, созданной фирмой Microsoft в 1991 году. Они значительно упростили программирование интерфейса прикладной программы, работающей в новой для того времени операционной среде Windows. Элемент управления – объект, помещаемый пользователем в форму или на рабочий лист и имеющий собственный набор распознаваемых свойств, методов и событий. Размещение элементов управления в форме пользователя осуществляется при помощи панели инструментов VBA “Toolbox”, которая появляется на экране при вставке формы. Среди множества элементов управления наиболее часто используются три – «Командная кнопка» (CommandButton), «Текстовое поле» (TextBox) и «Надпись» (Label). Элемент «Командная кнопка» (CommandButton) всегда связан с процедурой обработки событий. Элемент «Текстовое поле» (TextBox) используется для ввода информации в программу или вывода сообщений. Элемент «Надпись» (Label) применяется только для вывода различных текстов в форме, а также рисунков. Элементы управления начинают работать и реагировать на действия пользователя только после того, как они помещены на рабочий лист или форму пользователя.

Для разработки более удобных и разнообразных окон пользователя применяется объект «Форма» (UserForm). Форма – это окно, конструируемое пользователем. Объект UserForm представляет собой диалоговое окно, являющееся составной частью интерфейса пользователя в приложении. Для того чтобы вставить форму в проект нужно использовать вставку «UserForm» из меню «Вставка». Формам пользователя присущи также и методы, которые позволяют воздействовать на неё. Например, Load – загружает форму пользователя в оперативную память, но не отображает её на экране; Unload– удаляет форму из памяти; Show– отображает на экране форму пользователя. Программирование работы с формами пользователя заключается в написании процедур реакции на различные события, которые могут произойти при работе пользователя с формой. При создании объекта UserFormVBA система автоматически создаёт связанный с ним модуль. В этом модуле размещаются процедуры обработки событий Формы и размещённых в ней элементов управления. В общем случае заготовка процедуры обработки события имеет синтаксис:

PrivateSubОбъект управления _Событие()

EndSub

В последующем пользователь в текст заготовки добавляет необходимые для решения поставленной задачи инструкции и получает завершённую процедуру обработки конкретного события конкретным объектом (элементом управления).

Практическая часть:

1. Задание:

Для размещения на рабочем листе Excel табличного документа и визуальных элементов управления в среде VBA разработать проект, включающий в себя следующие основные компоненты:

1. Процедуру макроса формирования заголовка таблицы и названия столбцов.

2. Форму пользователя ввода данных строк таблицы.

3. Процедуру построчной записи считанной информации в таблицу.

4. Процедуру расчёта незаполненных столбцов таблицы на основе известных данных строк.

5. Вспомогательную процедуру очистки таблицы.

Исходная таблица:

«Список товаров, подготовленных к продаже. Ожидаемая выручка»

Номенк. Номер Наименов. Товара Еден. Изм. Цена за ед.,руб. Кол-во Сумма, руб. Налог (20%) Всего, руб.
13675 Шапки шт. 788,00 64 60518,40
3816 Пальто шт. 1435,80 42 72364,32
13855 Платки шт. 194,35 86 20056,92
3843 Рубашки шт. 220,75 110 29139,00
3811 Куртки шт. 984,40 38 44888,64
13868 Костюмы шт. 1495,00 40 71760,00
Итого 298727,3

2. Вид формы UserForm1:

3. Вид формы UserForm2: