ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 27.03.2024
Просмотров: 30
Скачиваний: 0
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Лабораторная работа №6
«Работа с формами»
Примеры создания программ для работы с формами 2
Расположение элементов на форме 20
Самостоятельная работа 21
Задание №1 21
Задание №2 21
Задание №3 22
Задание №4 22
Состав Панели элементов:
Название элемента | Имя в программе | Назначение |
Надпись | Label | используется для создания заголовков к элементам, не имеющих свойства Captoin (таких как, ListBox, TextBox) |
Поле | TextBox | используется для ввода текста или для вывода результатов |
Рамка | Frame | элемент предназначен для группирования элементов в форме |
Кнопка | CommandButton | используется для запуска процесса выполнения некоторых действий, вызываемы нажатием кнопки |
Поле со списком | ComboBox | служит для хранения списка значений, из которого пользователь может выбрать одно во время работы программы. Сочетает в себе возможности списка и текстового поля |
Флажок | CheckBox | элемент, который создает поле для проставления галочки. Это поле имеет два состояния — отмечена галочка или нет |
Переключатель | OptionButton | элемент предназначен для выбора одного элемента из нескольких |
Список | ListBox | элемент предназначен для хранения списка значений, из которого можно выбрать один или несколько элементов |
Полоса прокрутки | ScrollBar | элемент создает горизонтальную или вертикальную линейку прокрутки |
Счетчик | SpinButton | регулятор счетчика (спиннер) аналогичен линейке прокрутки |
Существуют и другие элементы управления.
В программе все объекты имеют номер. Например, если создать в окне диалога флажок, то его имя в программе будет CheckBox1.
Создание формы:
|
Примеры создания программ для работы с формами
Пример 1. Создать окно диалога, содержащее поля для ввода фамилии и имени. Значения этих полей записать в электронную таблицу.
-
На рабочем листе "Лист1" создайте таблицу следующего вида:
-
Создайте форму, которая будет содержать два поля для ввода текста (имени и фамилии), две надписи и две кнопки. При нажатии кнопки ВВОД информация из текстовых полей будет записываться в ячейки рабочего листа, а при нажатии кнопки КОНЕЦ будет происходить окончание работы с формой.
P.S. Средние (неподписанные) элементы управления – это TextBox1 и TextBox2.
-
Установите свойства объектов:
Объект | Свойство | Значение |
Label1 | Caption | Фамилия (см.рис. ниже) |
Label2 | Caption | Имя |
CommandButton1 | Caption | Ввод |
CommandButton2 | Caption | Конец |
После изменения свойств элементов управления форма будет выглядеть так:
-
Кнопке КОНЕЦ назначим процедуру (для ввода процедуры выполните двойной щелчок мышью по кнопке КОНЕЦ):
Private Sub CommandButton2_Click()
End
End Sub
-
КнопкеВВОДназначимпроцедуру:
Private Sub CommandButton1_Click()
Dim Фамилия, Имя As String
Dim Row As Integer
Row = Application.CountA(Sheets("Лист1").Range("A:A")) + 1
With UserForm1
Фамилия = .TextBox1.Text
Имя = .TextBox2.Text
End With
With Sheets("Лист1")
.Cells(Row, 1).Value = Фамилия
.Cells(Row, 2).Value = Имя
End With
With UserForm1
.TextBox1.Text = ""
.TextBox2.Text = ""
End With
End Sub
Пояснения к программе:
В VBA диапазон "А:А" означает столбец А. Функция CountA подсчитывает число непустых ячеек в выделенном диапазоне. Такимобразом, функция
Row = Application.CountA(Sheets("Лист1").Range("A:A")) + 1
вычисляет число непустых ячеек в столбце А.
В переменную целого типа Row записывается количество непустых ячеек столбца А и значение переменной увеличивается на 1 для того, чтобы считанная из текстовых полей информация записывалась затем в пустые строки таблицы.
-
Программа запускается клавишей F5. Для запуска программы можно также создать командную кнопку на рабочем листе Excel, назначив ей соответствующий макрос. Например, такой:
Sub Кнопка1_Щелкнуть()
UserForm1.Show
EndSub
После того, как на экран будет выведена форма, введите в поле для ввода Фамилия свою фамилию, в поле для ввода Имя – свое имя (переключаться между полями можно кнопкой Tab или щелчком мыши). Затем нажмите на форме кнопку ВВОД. Введенные фамилия и имя появятся в ячейках рабочего листа.
Введите еще раз Фамилию и Имя. Затем нажмите кнопку КОНЕЦ на форме.
Пример 2.Создайте форму, содержащую два переключателя и две кнопки. В зависимости от того, какой переключатель установлен, в ячейку Е1 будет записываться название этого переключателя.
Установите свойства объектов:
Объект | Свойство | Значение |
OptionButton1 | Caption | Муж |
OptionButton2 | Caption | Жен |
CommandButton1 | Caption | ВВОД |
CommandButton2 | Caption | КОНЕЦ |
Кнопка ВВОД считывает значение переключателя, кнопка КОНЕЦ осуществляет выход из программы.
Кнопке КОНЕЦ назначим процедуру:
PrivateSubCommandButton2_Click()
End
End Sub
Кнопке ВВОД назначим процедуру:
Private Sub CommandButton1_Click()
Dim Пол As String
With UserForm2
If .OptionButton1 = True Then Пол = "Муж"
If .OptionButton2 = True Then Пол = "Жен"
End With
Sheets("Лист1").Cells(1, 5) = Пол
EndSub
После того, как на экран будет выведена форма, установите любой переключатель. Затем нажмите на форме кнопку ВВОД. Посмотрите, что будет введено в Е1.
Пример 3. Создайте форму, содержащую два флажка и две кнопки. Если флажки установлены, то в ячейках G1 и G2, соответственно, записывается слово «Да», в противном случае «Нет».
Окно формы имеет вид:
Установите свойства объектов:
Объект | Свойство | Значение |
CheckBox1 | Caption | Оплачено |
CheckBox2 | Caption | Паспорт сдан |
CommandButton1 | Caption | НАЧАЛО |
CommandButton2 | Caption | КОНЕЦ |
Кнопка НАЧАЛО считывает значения флажков, кнопка КОНЕЦ – выход из программы.
Кнопке КОНЕЦ назначим процедуру:
PrivateSubCommandButton2_Click()
End
End Sub
Кнопке НАЧАЛО назначим процедуру:
Private Sub CommandButton1_Click()
Dim Паспорт As String, Оплачено As String
With UserForm3
If .CheckBox1.Value = True Then
Оплачено = "Да"
Else
Оплачено = "Нет"
End If
If .CheckBox2.Value = True Then
Паспорт = "Да"
Else
Паспорт = "Нет"
End If
End With
With Sheets("Лист1")
.Cells(1, 7) = Оплачено
.Cells(2, 7) = Паспорт
End With
EndSub
После того, как на экран будет выведена форма, установите любой из флажков
(или сразу два). Затем нажмите на форме кнопку НАЧАЛО. Посмотрите, что будет введено в G1 и G2.
Пример 4. Создайте форму, содержащую список и две кнопки. Выбранное из списка значение запишите в ячейку G4.
Окно формы имеет вид:
Установите свойства объектов:
Объект | Свойство | Значение |
CommandButton1 | Caption | НАЧАЛО |
CommandButton2 | Caption | КОНЕЦ |
Вариант 1. При нажатии кнопки НАЧАЛО формируется список с помощью метода AddItem.
Кнопке КОНЕЦ назначим процедуру:
PrivateSubCommandButton2_Click()
End
EndSub
Кнопке НАЧАЛО назначим процедуру:
Private Sub CommandButton1_Click()
With ListBox1
.AddItem "Люкс"
.AddItem "Одноместный"
.AddItem "Двухместный"
EndWith
EndSub
Для считывания значения поля списка в клетку G4 назначьте элементу ListBox1 процедуру:
Private Sub ListBox1_Click()
Cells(4, 7) = ListBox1
EndSub
После того, как на экран будет выведена форма, нажмите кнопку НАЧАЛО. Выберите любой элемент списка и посмотрите, что будет введено в G4.
Вариант 2. Список формируется с помощью метода AddItem, и появляется на форме при ее выводе на экран. Тогда на форме достаточно будет одной кнопки КОНЕЦ.
Кнопке КОНЕЦ назначим процедуру:
PrivateSubCommandButton2_Click()
End
EndSub
Для считывания значения поля списка в клетку G4 назначьте элементу ListBox1 процедуру:
Private Sub ListBox1_Click()
Cells(4, 7) = ListBox1
EndSub
Чтобы список был заполнен сразу при выводе формы на экран необходимо вызов этого метода поместить в обработчик события Initialize формы, на которой расположено поле со списком.
Private Sub UserForm_Initialize()
With ListBox1
.AddItem "Люкс"
.AddItem "Одноместный"
.AddItem "Двухместный"