Указания по порядку выполнения работы
Постановка задачи. Проект, который должен быть создан в данной работе,выводит на экран пользовательскую форму с надписью: «Я программирую всистеме VBA». Кроме надписи, на основной пользовательской форме должны присутствовать две экранные кнопки. Одиночный щелчок левой кнопкой мыши на одной из этих экранных кнопок должен выводить в нижней части формы вторую надпись со сведениями об авторе программы. При двойном щелчке мышью на этой же кнопке надпись со сведениями об авторе должна исчезнуть. Вторая экранная кнопка нужна для того, чтобы закрыть основную экранную форму и завершить работу данной программы.
Порядок выполнения. Работа начинается с того, что создаётся документ Microsoft Word, который должен иметь название:
Первая программа Сидорова.doc.
Затем необходимо открыть этот документ и войти в систему программирования VBA с помощью последовательности команд меню Сервис → Макрос → VisualBasic. Выполнение этой последовательности команд открывает систему программирования VBA.
Далее в системе VBA необходимо создать экранную форму с помощью команд меню Insert → UserForm.
Пользовательская форма является таким же объектом программы, как и все элементы интерфейса, которые на ней расположены. Поэтому можно менять свойства формы, используя окно свойств Properties. Окно формы имеет строку заголовка, и одним из свойств формы является содержимое текста, находящегося в строке заголовка. По умолчанию в этой строке выводится имя основной формы – UserForm1. Для того чтобы изменить содержание текста в строке заголовка, сделав его более информативным, обратимся к окну свойств Properties. Так как на форме в данный момент нет ещё ни одного объекта, то окно Properties показывает свойства самой формы. Найдём в этом окне свойство Caption, которое и отвечает за содержимое текста в строке заголовка формы. Щёлкнем мышью в поле, находящемся справа от названия свойства. В этом поле появляется вертикальный курсор, наличие которого говорит о том, что данное поле можно редактировать. Удалим находящееся в этом поле значение UserForm1 и вместо него введём с клавиатуры следующее значение:
Первая программа Сидорова в VBA.
Этот же текст теперь отобразится и в строке заголовка экранной формы.
Следующим шагом в настройке свойств основной формы является изменение фонового цвета самой формы. По умолчанию цвет основной формы является светло-серым. Для изменения цвета следует в окне Properties найти свойство BackСolor, которое отвечает за изменение фонового цвета формы. Щёлкнув по раскрывающей стрелке, находящейся вполе справа от названия свойства, можно открыть палитру для выбора другого цвета формы. Следует обратить внимание на то, что открывающаяся палитра имеет две вкладки: System (системная) и Palette (собственно палитра). По умолчанию открывается вкладка System, которая содержит ограниченный набор цветов. Переключившись щелчком мыши на вкладку Palette, пользователь открывает палитру с бóльшим количеством цветов. Для нашего проекта выбираем в этой палитре светло-зелёный цвет, который и становится фоновым цветом формы. После настройки свойств формысоздаём на ней объект Label (Надпись), для чего нужно в Панели элементов щёлкнуть кнопку с прописной буквой A. Появившийся на экранной форме объект получает по-умолчанию имя Label1. Для данного объекта также необходимо изменить содержание текста надписи. Находим в окне Properties объекта Label1 свойство Caption и вместо стоящего там по умолчанию значения «Label1» вводим новый текст: «Я программирую в системе VBA».
Затем настраиваем шрифт надписи. Для этого находим в окне Properties свойство Font и щелчком на кнопке-построителе открываем диалоговое окно «Шрифт». В диалоговом окне задаём размер шрифта – 18 пунктов и начертание шрифта – жирный.
Далее устанавливаем цвет шрифта надписи. Цвет шрифта определяется свойством ForeColor. Для изменения цвета шрифта находим это свойство в окне Properties. Затем в поле справа от свойства ForeColor щелкаем раскрывающую стрелку. В результате этих действий открывается цветовая палитра, аналогичная такой же палитре для свойства BackColor. В открывшейся палитре переходим на вкладку Palette и выбираем на ней цвет шрифта (в нашем проекте – синий). На этом настройку свойств первой надписи можно считать завершённой.
Затем создаём на экранной форме с помощью Панели элементов две экранные кнопки – CommandButton1 и CommandButton2. Для кнопки CommandButton1 в окне Properties находим свойство Caption и вводим следующее содержимое текста: «Сведения об авторе». На кнопке CommandButton2 создаём текст, состоящий из одного слова: «Выход». Для обеих кнопок с помощью свойства Font устанавливаем размер шрифта, равный 14 пунктам. Цвет шрифта мы в данном случае не меняем, так как он все равно останется черным, даже если мы укажем для свойства ForeColor другой цвет.
Ниже экранных кнопок необходимо поместить ещё одну надпись, которая по умолчанию получает имя Label2. Эта надпись будет содержать сведения о разработчике приложения. Затем для данной надписи производим настройку ее свойств.
Для свойства Caption устанавливаем содержание: «Программу разработал …» (вместо многоточия ставим фамилию и инициалы того, кто разработал данную программу). Для свойства Font указываем размер шрифта, равный 16 пунктам, и жирное начертание. Используя свойство ForeColor, задаём цвет шрифта надписи – красный.
Наконец, задаёмещё одно свойство данной надписи. Эта надпись, согласно условиям задания, по умолчанию должна быть невидимой. Для этого в окне Properties находим свойство Visible и устанавливаем для него значение False.
На этом работа по созданию и настройке графического интерфейса пользователя в данном проекте завершена. Получившийся в результате проведённой работы пользовательский интерфейс можно видеть на рис.1.
Рис. 1
Следующим этапом в работе над проектом является написание программного кода. В данном проекте активными объектами, которые реагируют на программные события, являются две экранные кнопки. Для них и нужно написать процедуры, описывающие их реакции на различные внешние воздействия.
Для того чтобы открыть окно кода для какого-либо объекта, достаточно дважды щёлкнуть его мышью. Основным программным событием, на которое должен реагировать любой объект в системе VBA, считается одиночный щелчок левой кнопкой мыши.
Дважды щёлкнем мышью на экранной кнопке CommandButton1, и в результате откроется окно кода с заготовкой для процедуры, соответствующей этой кнопке. Данная заготовка выглядит следующим образом:
PrivateSubCommandButton1_Click()
End Sub
Первая строка этой заготовки является заголовком процедуры. В заголовке пишутся служебное слово Sub (сокращение от Subroutine, что по-английски означаетподпрограмма) и собственное имя процедуры. Собственное имя процедуры состоит из имени объекта, для которого она пишется, и название события, на которое должен реагировать этот объект. Между этими двумя частями собственного имени процедуры ставится символ подчёркивания. В данном случае имя объекта CommandButton1, а название события – Click (по-английски так называется одиночный щелчок мышью). В нижней строке заготовки стоит команда End Sub – конец процедуры. Между ними пользователь может ввести текст самой процедуры.
В данном случае следует описать действие, которое превращает невидимый ранее объект (нижнюю надпись Label2) в видимый. Для этого нужно изменить значение свойства Visible с False (объект не виден) на True (объект виден), или, иначе говоря, присвоить свойству Visible новое значение. Оператор (команда языка Visual Basic), который выполняет это действие, называется оператором присваивания.
Синтаксис данного оператора следующий. Сначала указывается полное имя изменяемого свойства, которое состоит из имени объекта и собственного имени свойства. Имя объекта и имя свойства отделяются друг от друга с помощью точки. Таким образом, полное имя свойства в данном случае будет: Label2.Visible. Затем указывается операция присваивания, которая обозначается в языке Visual Basic знаком равенства. Наконец, после знака равенства указывается новое значение, которое присваивается этому свойству. Таким образом, целиком оператор, делающий невидимую ранее надпись видимой, будет выглядеть следующим образом:
Label2.Visible = True
Этот оператор мы и записываем в пустой строке, находящейся между заголовком и концом процедуры. В целом же процедура, описывающая реакцию на щелчок левой кнопкой мыши, будет выглядеть таким образом:
Private Sub CommandButton1_Click()
Label2.Visible = True
End Sub
Но на этом работа с объектом CommandButton1 ещё не завершена. Для данной экранной кнопки необходимо написать ещё одну процедуру. Вторая процедура должна при двойном щелчке на кнопке CommandButton1 делать надпись Label2 со сведениями об авторе снова невидимой.
Для того чтобы создать вторую процедуру, поступаем следующим образом. В окне кода в правой верхней его части находится вспомогательное текстовое поле. В нем содержится список программных событий, на которые может реагировать данный объект. По умолчанию в списке указано событие Click (одиночный щелчок левой кнопкой мыши). В текстовом поле справа от названия события имеется направленная вниз треугольная стрелка. Щёлкнув по этой стрелке, мы увидим весь список программных событий, на которые может реагировать данный объект. В этом списке щелчком мыши выбираем событие DblClick (двойной щелчок левой кнопкой мыши), а окне кода появляется шаблон для второй процедуры. Этот шаблон имеет следующий вид:
PrivateSubCommandButton1_DblClick (ByValCancel
As MSForms.ReturnBoolean)
End Sub
В пустую строку, находящуюся между заголовком и концом процедуры, записываем программный код, который выполняет действие, обратное действию, описанному в предыдущей процедуре, – скрывает надпись со сведениями об авторе. Этот код выглядит так:
Label2.Visible=False
В итоге для описания реакции экранной кнопки CommandButton1 на двойной щелчок левой кнопкой мыши получаем следующую процедуру:
Private Sub CommandButton1_DblClick (ByVal Cancel
As MSForms.ReturnBoolean)
Label2.Visible=False
End Sub
На этом программирование кнопки CommandButton1 завершено. Возвращаемся к основной экранной форме, для чего можно использовать команду меню View → Object.
Следующим объектом, для которого нужно написать программный код, является экранная кнопка CommandButton2. Дважды щелкаем мышью по этой кнопке, и снова на экране появляется окно кода с шаблоном уже для третьей процедуры, имеющим следующий вид:
Private Sub CommandButton2_Click()
End Sub
Этот шаблон аналогичен шаблону первой процедуры, за исключением названия объекта. В пустую строку между заголовком и концом процедуры нужно вставить команду, которая будет закрывать приложение приодиночном щелчке мышью по экранной кнопке CommandButton2. Эта команда состоит из одного служебного слова и выглядит так:
End
А вся процедура для описания реакции второй экранной кнопки на щелчок левой кнопки мыши будет выглядеть так:
Private Sub CommandButton2_Click()
End
End Sub
Таким образом, мы завершили написание программного кода для нашего первого приложения. Нижеприводимвесьлистингцеликом:
Private Sub CommandButton1_Click()
Label2.Visible = True
End Sub
Private Sub CommandButton1_DblClick(ByVal Cancel As
MSForms.ReturnBoolean)
Label2.Visible = False
End Sub
Private Sub CommandButton2_Click()
End
End Sub
Теперь, когда работа над программой завершена, можно запустить ее на выполнение. Для этого нужно использовать команду меню Run → Run или просто щёлкнуть треугольную стрелку в панели инструментов. На экране появится рабочее окно приложения, внешний вид которого приведён на рис. 2.
Рис. 2
Обратите внимание на то, что при переходе программы в режим выполнения исчезла покрывавшая основное окно координатная сетка, а также стала невидимой надпись со сведениями об авторе. Теперь осталось протестировать созданное приложение. Для этого один раз щелкаем мышью на экранной кнопке «Сведения об авторе», – надпись со сведениями об авторе должна появиться ниже этой кнопки. Затем дважды щелкаем ту же экранную кнопку, – надпись должна исчезнуть. Наконец, завершаем работу приложения одиночным щелчком на экранной кнопке «Выход».
Конечно, не исключено, что где-то в программном коде разработчик допустил ошибку. В этом случае при запуске программы на выполнение появится сообщение об ошибке. Такое сообщение выводится в виде диалогового окна, содержащего текст: «Compile error» (Ошибка компиляции). Ниже, как правило, выводится дополнительная информация о конкретном типе ошибки. Кроме того, как правило, та строка, в которой содержится ошибка, выделяется в окне кода синим цветом, что существеннооблегчает поиск этой ошибки. После нахождения и исправления ошибки можно повторно запустить эту программу на выполнение.
Когда устранены все ошибки, и программа при тестировании показала свою работоспособность, она должна быть сохранена. Поскольку программа на Visual Basic сохраняется вместе с исходным файлом, то нужно закрыть систему программирования одним из указанных выше способов (через меню File или через закрывающую кнопку в строке заголовка), а затем закрыть файл Первая программа.doc с сохранением сделанных в нем изменений.
О завершении работы сообщите преподавателю и продемонстрируйте работу Вашей программы.
Контрольные вопросы
1. Как войти в среду VBA?
3. Как изменить тон фона?
4. Как создать надпись?
5. Как запустить проект на исполнение?
6. Как сохранить проект?
7. Как сохранить проект, чтобы он был доступен из любого файла?
8. Как сделать надпись невидимой?
9. Можно ли поменять фон экранной формы после сохранения проекта?
10. Что такое CommandButton?
Литература/источники
1. Программирование на VBA и создание макросов,http://www.lessons-tva.info/edu/e-inf2/m2t3_7.html
2. Самоучитель программирования на VBAв MSOffice, http://www.libray.narod.ru/rapid/vba_programmirovanie_office.htm
3. Стив Камминг«VBA для чайников»
http://www.proklondike.com/books/vb/vb_Cummings_VBA_Dummies.html
РАБОТА№ 13.