Цель работы: Расширитьнавыки практической работы в среде программирования VBA.
В результате выполнения данной работы студенты должны закрепить навыки работы всреде программирования VBA и разработки простейших программ с использованием инструментария данной среды.
В конце лабораторной работы студенты должны представить отчёт по работе преподавателю в виде демонстрации работы тестовой программы.
Указания по порядку выполнения работы.
Постановка задачи. Проект, который должен быть создан в данной работе,должен изменять цвет экранной формы с помощью группы из 8 переключателей. Как известно, в Windows переключатели (другое название этих элементов – радиокнопки) – это группа элементов управления, в которой активным (включённым) всегда может быть один и только один элемент, а остальные выключены. В данном случае каждый из 8 переключателей отвечает за один из цветов, в который будет окрашена экранная форма. Форма в данном проекте должна окрашиваться в один из следующих цветов: белый, чёрный, красный, жёлтый, синий, зелёный, фиолетовый, бирюзовый.
Порядок выполнения.
Как и в предыдущей работе, вначале нужно создать новый файл Microsoft Word (например, Цвета.doc).
Затем в Word с помощью команды Сервис → Макрос → Редактор Visual Basic открываем экран системы VBA. На этом экране с помощью команды Insert → UserForm создаём основную пользовательскую форму.
Далее на форме необходимо создать пользовательский интерфейс проекта. Пользовательский интерфейс должен включать следующие элементы: рамка, содержащая группу переключателей, сами переключатели, экранная кнопка «Выход» и экранная кнопка «Сведения об авторе».
В начале работы над проектом задаём текст в строке заголовка пользовательской формы. Для этого нужно щёлкнуть мышью на любом свободном месте внутри формы и затем в окне Properties (Свойства) найти свойство Caption. В поле, расположенном справа от названия этого свойства, вводим следующий текст: «Изменение цвета формы». Этот текст будет отображаться в строке заголовка основной формы проекта. Для создания рамки, внутри которой будут размещены переключатели, необходимо в панели элементов Toolbox найти элемент Frame (в русифицированных версиях VBA он называется – «Рамка»). Этот элемент выглядит следующим образом:
Щёлкнув мышью по данному элементу, а затем по экранной форме, помещаем этот элемент на форму, создавая новый объект Frame1.
Объект Frame1 имеет на границах маркеры (маленькие белые квадраты), с помощью которых можно увеличивать или уменьшать размерыэтого объекта. Размеры рамки следует изменить таким образом, чтобы в ней разместились 8 переключателей с надписями.
Подобно другим элементам пользовательского интерфейса в VBA, объект Frame1 имеет свойство Caption, отвечающее за содержание текста, который виден в верхней части рамки. В окне Properties для рамки находим свойство Caption и в поле справа вводим его значение: «Выберите цвет формы».
Затем внутрь рамки помещаем переключатели. Элемент OptionButton (переключатель) также находится на панели элементов Toolbox и выглядит так:
.
Последовательно размещаем переключатели один под другим. Эти элементы управления получат в нашем проекте такие имена: OptionButton1, OptionButton2, OptionButton3,OptionButton4, OptionButton5, OptionButton6, OptionButton7, OptionButton8. Каждый из этих переключателей также имеет свойство Caption. В данном случае свойство Caption отвечает за надпись, которая расположена справа от самого переключателя. Для переключателя OptionButton1 в свойстве Caption пишем слово «Белый», для OptionButton2 в этом свойстве пишем «Чёрный», для OptionButton3 – «Красный», OptionButton4 – «Жёлтый», OptionButton5 – «Синий», OptionButton6 – «Зелёный», OptionButton7 – «Фиолетовый», OptionButton8 – «Бирюзовый».
Далее на экранной форме необходимо создать экранные кнопки CommandButton1 и CommandButton2. Для первой кнопки в Caption пишем фразу «Сведения об авторе», для второй — «Выход». Для всех надписей на рамке, переключателях и экранных кнопках настраиваем необходимым образом шрифт с помощь свойства Font. На этом создание графического интерфейса пользователя для данной программы завершено. Внешний вид интерфейса показан на рис. 1.
Затем следует написать программный код для переключателей и кнопок. Процедура, описывающая работу каждого переключателя, должна окрашивать основную экранную форму UserForm1 в один из перечисленных цветов. Экранная форма, как известно из работы 11, имеет свойство BackColor (цвет фона), которому и присваивается цветовое значение.
Рис. 1
Цвет в Visual Basic может задаваться двумя способами: в виде шестнадцатеричного числа или в виде словесной константы этого языка. В нашей программе мы будем использовать второй способ обозначения цвета, как более наглядный. Константа, соответствующая определённому цвету, состоит из приставки vb (сокращение от Visual Basic) и названия конкретного цвета. Белому цвету соответствует константа vbWhite, черному – vbBlack, красному – vbRed, жёлтому – vbYellow, синему – vbBlue, зелёному – vbGreen,фиолетовому – vbMagenta, бирюзовому –vbCyan. Тогда окрашивание основной формы в белый цвет будет производиться оператором:
UserForm1.BackColor = vbWhite
Аналогичные операторы используются и для окрашивания формы в другие цвета. Следует обратить внимание на то, что пространство, находящееся внутри рамки, данными командами не закрашивается.
Для того чтобы ввести необходимый программный код, на форме дважды щелкаем мышью переключатель OptionButton1, появляется окно кода с шаблоном следующего вида:
Private Sub OptionButton1_Click()
End Sub
В пустую строку, находящуюся между заголовком и концом процедуры, записываем указанный выше оператор. Тогда в целом процедура для первой радиокнопки будет выглядеть так:
Private Sub OptionButton1_Click()
UserForm1.BackСolor = vbWhite
End Sub
Затем возвращаемся к основной форме, дважды щелкаем мышью переключатель OptionButton2, появляется окно кода с шаблоном для второй процедуры. В пустой строке этой процедуры записываем оператор:
UserForm1.BackColor = vbBlack
Процедура для второго переключателя OptionButton2 в целом будет выглядеть так:
Private Sub OptionButton2_Click()
UserForm1.BackСolor = vbBlack
End Sub
Выполнение этой процедуры при щелчке по второму переключателю будет окрашивать экранную форму в чёрный цвет. Аналогичным образом программируем все остальные 6 переключателей, находящихся внутри рамки.
Затем необходимо написать программный код для экранной кнопки CommandButton1 (кнопка «Об авторе»). Эта кнопка будет работать иначе, чем в предыдущем проекте. Пользовательский интерфейс данной программы и так содержит достаточно большое количество элементов, поэтому не будет перегружать его, создавая на основной форме ещё одну надпись. В данном проекте щелчок мышью по кнопке «Об авторе» должен выводить на экран дополнительное диалоговое окно, содержащее информацию о разработчике программы, и экранную кнопку «Ok», закрывающую диалоговое окно.
Для создания такого окна используется команда Msgbox. В данной команде после служебного слова Msgbox в круглых скобках и в кавычках указывается текст, выводимый в появляющемся диалоговом окне.
Пример реализации такой команды приведён ниже:
Msgbox(“Программу разработал А.Н. Маслобоев”)
Записываем указанную команду в соответствующую строку процедуры CommandButton1_Click,расположенную между заголовком процедуры и концом процедуры. Процедура в целом будет выглядеть так:
Private Sub CommandButton1_Click()
Msgbox(“Программу разработал А.Н. Маслобоев”)
End Sub
Выполнение этой команды при щелчке на экранной кнопке и выведет на экран диалоговое окно, которое появится поверх основной экранной формы. Внешний вид данного окна показан на рис. 2. После ознакомления с данным окном пользователь может закрыть его щелчком на экранной кнопке «OK» и вернуться к работе с основным окном приложения.
Рис. 2
Экранная кнопка CommandButton2 («Выход»), закрывающая данное приложение по окончании его работы, в этом проекте программируется так же, как и в предыдущем. В итоге после написания программного кода для всех объектов приложения мы получаем листинг, текст которого приводится ниже:
Private Sub CommandButton1_Click()
MsgBox ("Программу разработал А.Н.Маслобоев")
End Sub
Private Sub CommandButton2_Click()
End
End Sub
Private Sub OptionButton1_Click()
UserForm1.BackColor = vbWhite
End Sub
Private Sub OptionButton2_Click()
UserForm1.BackColor = vbBlack
End Sub
Private Sub OptionButton3_Click()
UserForm1.BackColor = vbRed
End Sub
Private Sub OptionButton4_Click()
UserForm1.BackColor = vbYellow
End Sub
Private Sub OptionButton5_Click()
UserForm1.BackColor = vbBlue
End Sub
Private Sub OptionButton6_Click()
UserForm1.BackColor = vbGreen
End Sub
Private Sub OptionButton7_Click()
UserForm1.BackColor = vbMagenta
End Sub
Private Sub OptionButton8_Click()
UserForm1.BackColor = vbCyan
End Sub
После завершения работы над программным кодом запускаем программу на выполнение. На рис. 3 показана программа, находящаяся в рабочем режиме. Активным является переключатель, окрашивающий экранную форму в бирюзовый цвет.
После тестирования всех 8 переключателей, имеющихся на форме, и кнопки, открывающей окно со сведениями об авторе, можно завершить работу приложения щелчком на экранной кнопке «Выход».
Рис. 3
Если где-то в программном коде допущена ошибка, топри запуске программы на выполнение появится сообщение об ошибке. Такое сообщение выводится в виде диалогового окна, содержащего текст: «Compile error» (Ошибка компиляции). Ниже, как правило, выводится дополнительная информация о конкретном типе ошибки. Кроме того, как правило, та строка, в которой содержится ошибка, выделяется в окне кода синим цветом, что существенно облегчает поиск этой ошибки. После нахождения и исправления ошибки можно повторно запустить эту программу на выполнение.
Когда устранены все ошибки, и программа при тестировании показала свою работоспособность, она должна быть сохранена. Поскольку программа на Visual Basic сохраняется вместе с исходным файлом, то нужно закрыть систему программирования одним из указанных выше способов (через меню File или через закрывающую кнопку в строке заголовка), а затем закрыть файл Первая программа.doc с сохранением сделанных в нем изменений.
О завершении работы сообщите преподавателю и продемонстрируйте работу Вашей программы.
Контрольные вопросы
1. Что такое макрокоманда (макрос)?
2. Какую последовательность действий нужно выполнить в VBA для создания группы переключателей?
3. Какую последовательность команд нужно использовать в программе
Word для того, чтобы войти в среду программирования VBA?
4. Как вывести в среде VBA на экран окно программного кода?
5. Какое свойство определяет фоновый цвет объекта?
6. Какое свойство определяет видимость или невидимость объекта?
7. Какиеосновные объекты, которые можно создавать в VBA с помощью панели элементов.
8. Какие свойства определяют основные характеристики шрифта, которым сделана надпись на объекте?
9. Что содержитToolbox?
10. Для чего в работе используетсяOptionButton?
Литература/источники
1. Программирование на VBA и создание макросов,
http://www.lessons-tva.info/edu/e-inf2/m2t3_7.html
2. Самоучитель программирования на VBA в MS Office, http://www.libray.narod.ru/rapid/vba_programmirovanie_office.htm
3. Стив Камминг«VBA для чайников»
http://www.proklondike.com/books/vb/vb_Cummings_VBA_Dummies.html
4Программирование на VBA,
http://itteach.ru/vba/programmirovanie-na-vba
РАБОТА № 14.