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: