Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лаб_VBA_верстка2010.doc
Скачиваний:
10
Добавлен:
08.11.2018
Размер:
237.06 Кб
Скачать

Информация для выполнения заданий

  • Возведение в степень (^) Пример: I = 2 ^ 2 ' Возвращает 4

  • Квадратный корень Sqr Пример: I = Sqr(4)

  • Изменение знака (–)

  • Целое деление (\) Пример: I = 11 \ 4 ' Возвращает 2.

  • Деление по модулю (Mod) Пример: I = 19 Mod 6 ' Остаток 1

  • Слияние строк (&)

Для закраски фона ячейки Excel используйте операторы Interior (фон) и ColorIndex (цвет).

Range("A1").Offset(Row, 0).Interior.ColorIndex = 3

Число 3 соответствует красному цвету.

Лабораторная работа № 6 Создание пользовательской формы

Цель работы: приобретение навыка создания пользовательской формы и программы в модуле формы, ознакомление с приемами использования элементов управления.

При помощи форм и элементов управления можно создавать диалоговые окна произвольной конфигурации. Элементы управления группируются в панели инструментов Тооlbox редактора VBA.

Задание: Создать пользовательскую форму для регистрации клиентов туристической фирмы “Будьте Здоровы”.

Выполнение:

1. Откройте свою книгу и вставьте новый лист. Дайте листу название “БудьтеЗдоровы”.

2. В первую строку, начиная с ячейки А1, введите названия граф:

Поз.

Фамилия

Имя

Отчество

Пол

Тур

Срок

Отформатируйте «шапку» таблицы: названия граф – по центрам ячеек, шрифт полужирный, заливка и обрамление – по собственному усмотрению.

3. Перейдите в окно VBA и вставьте модуль форм: Insert\UserForm. На экране появится шаблон формы (форма в режиме Конструктора), а также панель инструментов «Элементы управления» (Toolbox) и окно свойств (Properties).

Рис 1.

4. В окне Properties замените имя (Name) UserForm1 на frmБудьтеЗдоровы (окончание ввода имени обозначается нажатием на клавишу Enter или щелчком мыши где-нибудь за пределами введённого имени).

5. Расположите полотно формы на экране поудобнее, раздвиньте за маркеры выделения до размеров приблизительно 1210 см, расположите в удобном месте Toolbox и заполните полотно формы элементами управления в соответствии с рис. 1. В настоящий момент не имеют значения точные размеры и координаты элементов, они потом будут определены программно.

Сейчас важно не пропустить тот или иной элемент управления. Заполняя полотно формы, не забывайте, что редактор VBA поддерживает метод “Перенести и оставить” (Drag & Drop), который при нажатой клавише Ctrl копирует выделенный фрагмент в новое место.

6. Используя окно Properties (оно вызывается нажатием клавиши F4), дайте элементам управления имена в соответствии с рис. 2 в поле Name каждого элемента, а не на форме. Обратите внимание, что имена элементам управления здесь даются в соответствии с венгерской нотацией1, в соответствии с которой имя объекта снабжается префиксом, обозначающим класс объекта. Выбирать элемент управления можно из полотна формы, щёлкнув по нему мышкой, или непосредственно в окне Properties из выпадающего списка.

Рис 2.

7. Следующая часть работы – написание программы UserForm_Initialize (программа 1). Не отчаивайтесь, глядя на длинный текст: добрую половину работы за Вас сделает редактор VBA с помощью своих подсказок, значительную часть оставшейся работы поможет выполнить метод Drag & Drop.

Первая программа UserForm_Initialize задает свойства элементов вашей пользовательской формы. Ее можно набрать целиком или сначала свойства можно непосредственно ввести в окне Properties для каждого элемента, а текст первой программы тогда будет выглядеть:

Private Sub UserForm_Initialize()

With cboTur.List = Array("Голубые озёра", "Золотые пески", _

"Белые кружева", "Телецкое озеро", "Крымский каньон", "Янтарный берег")

.ListIndex = 0

End With

End Sub

Итак, выполните двойной щелчок по свободной части полотна формы и вы попадете в окно кода (текста программы), где сразу замените слово Click на Initialize. Затем набирайте остальные строки программы. Внимательно следите за текстом, подсказками на экране, при всякой возможности используйте Drag & Drop.

8. Проверьте полученную форму. Для этого нужно выполнить программу UserForm_Initialize. Чтобы запустить ее на выполнение, дайте команду Run | Run Sub/UserForm, которая дублируется клавишей F5 и кнопкой Run Sub/UserForm на панели инструментов.

Закройте окно формы, щёлкнув по системной кнопке закрытия окна в правом верхнем углу формы. Вы окажетесь в модуле текста программы формы – окне кода.

9. На завершающем этапе требуется создать несколько небольших подпрограмм.

Сначала освойте переход из окна конструктора форм в окно кода и обратно.

Переход из окна кода в режим конструктора форм: двойной щелчок по имени формы в окне Project Explorer.

Переход из окна конструктора форм в окно кода: щелчок по кнопке View Code на панели инструментов Project Explorer, команда View | View Code в главном меню редактора VBA или нажатие на клавишу F7.

10. Перейдите в окно конструктора форм и сделайте двойной щелчок по кнопке cmdCancel. Вы окажетесь в окне кода программы 2 cmdCancel_Click. Наберите текст программы (не забывайте о подсказках редактора и о методе Drag & Drop).

11. Перейдите в окно конструктора форм и сделайте двойной щелчок по кнопке cmdExit. Наберите текст программы 3.

12. Перейдите в окно конструктора форм и сделайте двойной щелчок по кнопке cmdOK. Наберите текст программы 4.

13. Перейдите в окно конструктора форм и сделайте двойной щелчок по счетчику spnSrok. Наберите текст программы 5.

14. Перейдите в окно конструктора форм и сделайте двойной щелчок по текстовому полю txtSrok. Наберите текст программы 6.

15. Нажмите клавишу F5 (или щёлкните по кнопке Run Sub/UserForm) и опробуйте действие элементов формы. Заполните все текстовые поля и щёлкните по кнопке ОК.

Перейдите в окно приложения на лист “БудьтеЗдоровы” и посмотрите, добавилась ли там ваша запись.

16. Перейдите на лист «Будьте Здоровы» и в ячейку H1 вставьте элемент управления кнопка. Дайте ей название «Регистрация» и введите для нее текст программы 7. Опробуйте ее работу.

17. Закройте книгу, сохраните изменения.

Программы

Private Sub UserForm_Initialize() 'Инициализация формы frmБудьтеЗдоровы

'Задание заголовка, размеров и цвета формы

With frmБудьтеЗдоровы

.Caption = "Регистрация туристов фирмы <Будьте здоровы!>"

.BackColor = RGB(0, 255, 255)

.Height = 200

.Width = 300

End With

'Задание свойств надписей и текстовых полей

With lblFam

.Caption = "Фамилия:"

.Top = 20

.Left = 10

.Height = 18

.Width = 50

.BackColor = RGB(0, 255, 255)

End With

'

With txtFam

.Top = 20

.Left = 65

.Height = 18

.Width = 80

End With

'

With lblImja

.Caption = "Имя:"

.Top = 40

.Left = 10

.Height = 18

.Width = 50

.BackColor = RGB(0, 255, 255)

End With

'

With txtImja

.Top = 40

.Left = 65

.Height = 18

.Width = 80

End With

'

With lblOtch

.Caption = "Отчество:"

.Top = 60

.Left = 10

.Height = 18

.Width = 50

.BackColor = RGB(0, 255, 255)

End With

'

With txtOtch

.Top = 60

.Left = 65

.Height = 18

.Width = 80

End With

'

With lblTur

.Caption = "Направление тура:"

.Top = 20

.Left = 170

.Height = 18

.Width = 80

.BackColor = RGB(0, 255, 255)

End With

'

With cboTur

.Top = 40

.Left = 170

.Height = 20

.Width = 90

.List = Array("Голубые озёра", "Золотые пески", "Белые кружева", "Телецкое озеро", _

"Крымский каньон", "Янтарный берег")

.ListIndex = 0

End With

'

With fraPol

.Top = 90

.Left = 25

.Caption = "Пол"

.Height = 30

.Width = 120

.BackColor = RGB(0, 255, 255)

End With

'

With optM

.Caption = "муж"

.BackColor = RGB(0, 255, 255)

.Left = 6

.Width = 40

End With

'

With optF

.Caption = "жен"

.BackColor = RGB(0, 255, 255)

.Left = 70

.Width = 40

End With

'

With lblSrok

.Caption = "Продолжительность тура:"

.BackColor = RGB(0, 255, 255)

.Left = 170

.Top = 80

.Height = 18

.Width = 110

End With

'

With txtSrok

.BackColor = RGB(0, 255, 255)

.Left = 170

.Top = 98

.Height = 20

.Width = 40

End With

'

With spnSrok

.Left = 215

.Top = 98

.Height = 20

.Width = 20

.BackColor = RGB(255, 255, 255)

.Orientation = fmOrientationVertical

End With

'Задание свойств командных кнопок

With cmdOK

.Caption = "OK"

.Left = 80

.Top = 140

.Height = 20

.Width = 50

.Default = True

End With

'

With cmdCancel

.Caption = "Отмена"

.Left = 150

.Top = 140

.Height = 20

.Width = 50

End With

'

With cmdExit

.Caption = "Выход"

.Left = 220

.Top = 140

.Height = 20

.Width = 50

End With

End Sub 'end of UserForm_Initialize

''*********************************************

Private Sub cmdCancel_Click()

With frmБудьтеЗдоровы

.txtFam = ""

.txtImja = ""

.txtOtch = ""

.txtSrok = 0

End With

End Sub

'*********************************************

Private Sub cmdExit_Click()

frmБудьтеЗдоровы.Hide

Application.Caption = Empty

End Sub

'*********************************************

'Считывание данных из текстовых полей формы и запись их на рабочий лист

Private Sub cmdOK_Click()

Dim Fam As String

Dim Imja As String

Dim Otch As String

Dim Pol As String * 3

Dim Tur As String

Dim Srok As String * 3

Dim NumRow As Integer

''Считывание данных из текстовых полей формы в локальные переменные

Fam = txtFam.Text

Imja = txtImja.Text

Otch = txtOtch.Text

If optM Then Pol = "муж" Else Pol = "жен"

Tur = cboTur.Text

Srok = txtSrok.Text

'Вывод данных на рабочий лист "БудьтеЗдоровы"

Worksheets("БудьтеЗдоровы").Select

'Первая свободная строка на листе '"БудьтеЗдоровы"

NumRow = ActiveSheet.UsedRange.Rows.Count + 1

'Вывод данных в ячейки

Cells(NumRow, 1).Value = NumRow - 1

Cells(NumRow, 2).Value = Fam

Cells(NumRow, 3).Value = Imja

Cells(NumRow, 4).Value = Otch

Cells(NumRow, 5).Value = Pol

Cells(NumRow, 6).Value = Tur

Cells(NumRow, 7).Value = Srok

'Очистка полей

txtFam.Text = ""

txtImja.Text = ""

txtOtch.Text = ""

Srok = 1

End Sub

''*********************************************

  1. '

Private Sub spnSrok_Change()

'Ввод значения счетчика в текстовое поле

With frmБудьтеЗдоровы

.txtSrok.Text = CStr(.spnSrok.Value)

End With

End Sub

''*********************************************

  1. '

Private Sub txtSrok_Change()

'Установка значения счетчика в поле ввода

With frmБудьтеЗдоровы

.spnSrok.Value = CInt(.txtSrok.Text)

End With

End Sub

'*********************************************

Sub Регистрация()

'Запускается щелчком по кнопке “Регистрация” ' на панели инструментов

frmБудьтеЗдоровы.Show

End Sub '

1 Соглашения о префиксах имён предложены Реддиком и стали общепринятыми для целей именования переменных и объектов в программах пользователя.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]