ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 27.03.2024
Просмотров: 32
Скачиваний: 0
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
EndWith
EndSub
После того, как на экран будет выведена форма с заполненным списком, выберите любой элемент списка и посмотрите, что будет введено в G4. Нажмите кнопку КОНЕЦ для завершения работы с формой.
Другие способы заполнения списков значениями:
-
Массивом. Список состоит из одной колонки:
Private Sub CommandButton1_Click()
a = Array("Люкс", "Одноместный", "Двухместный")
With ListBox1
.List = a
.ListIndex = 0
End With
End Sub
-
Прочитать предварительно введенные значения из ячеек рабочего листа:
Private Sub CommandButton2_Click()
With ListBox2
.RowSource = "c2:c4"
.ListIndex = 0
End With
EndSub
Примечание: в ячейки c2, c3, c4 предварительно введите с клавиатуры Люкс, Одноместный, Двухместный, соответственно.
-
Поэлементно. Список состоит из двух колонок:
Private Sub CommandButton3_Click()
With ListBox3
.ColumnCount = 2
.AddItem ("Люкс")
.List(0, 1) = "3500 руб."
.AddItem ("Одноместный")
.List(1, 1) = "2000 руб."
.AddItem ("Двухместый")
.List(2, 1) = "2500 руб."
.ListIndex = 0
End With
End Sub
-
Массивом. Список состоит из трех колонок:
Private Sub CommandButton4_Click()
Dim a(2, 2) As String
a(0, 0) = "Люкс"
a(0, 1) = "3500 руб."
a(0, 2) = "Обязательна бронь"
a(1, 0) = "Одноместный"
a(1, 1) = "2000 руб."
a(1, 2) = "Обычное заселение"
a(2, 0) = "Двухместый"
a(2, 1) = "2500 руб."
a(2, 2) = "Обычное заселение"
With ListBox4
.ColumnCount = 3
.List = a
.ListIndex = 0
End With
End Sub
Создайте такую форму и испытайте все варианты заполнения списков
P.S. Для первых трех кнопок (верхний ряд) установите свойства (помимо Caption):
-
AutoSize - значение False (убрать возможность изменения размера элемента управления в зависимости от введенных значений); -
MultiLine- значение True (ввод многострочного текста) -
WordWrap - значение True (автоматический перенос текста на новую строку, когда будет достигнута граница текстового поля, если MultiLine содержит значение true).
Пример 5.Создайте форму, содержащую поле со списком и две кнопки. Выбранное из списка значение запишите в ячейку K1.
P.S. Поле со списком следует заполнить перед использованием. Для добавления новых значений используется метод AddItem (Добавить элемент). Обычно вызовы этого метода помещают в обработчик события Initialize формы, на которой расположено поле со списком.
Работа с ComboBox аналогична работе с ListBox. Отличие только в том, что в поле со списком (во время работы с формой) можно с клавиатуры ввести недостающее значение.
Окно формы имеет вид:
Установите свойства объектов:
Объект | Свойство | Значение |
CommandButton1 | Caption | ВВОД |
CommandButton2 | Caption | КОНЕЦ ВВОДА |
Кнопке КОНЕЦ ВВОДА назначим процедуру:
Private Sub CommandButton2_Click()
End
End Sub
КнопкеВВОДназначимпроцедуру:
Private Sub CommandButton1_Click()
Dim Список As String
Список = UserForm6.ComboBox1.Value
Sheets("Лист1") .Cells(1, 11) = Список
End Sub
Для инициализации поля со списком создадим процедуру:
Private Sub UserForm_Initialize()
ComboBox1.AddItem "Люкс"
ComboBox1.AddItem "Одноместный"
ComboBox1.AddItem "Двухместный"
EndSub
После того, как на экран будет выведена форма, откройте список (нажмите кнопку со стрелкой), укажите в списке требуемый элемент списка. Затем нажмите на форме кнопку ВВОД. Посмотрите, что будет введено в K1.
Затем введите с клавиатуры в поле своё значение, например, Полулюкс, нажмите кнопку ВВОД и посмотрите, что будет введено в K1.
Способы заполнения значениями поля со списком такие же, как и для списков (ListBox).
Пример 6. Создайте форму, содержащую поле для ввода текста, две кнопки и счетчик, значение которого будет считываться для ввода в текстовое поле, а затем записываться в клетку К4.
Окно формы имеет вид:
Установите свойства объектов:
Объект | Свойство | Значение |
CommandButton1 | Caption | ЗАПИСЬ |
CommandButton2 | Caption | КОНЕЦ |
Для кнопки КОНЕЦ назначим процедуру:
Private Sub CommandButton2_Click()
End
End Sub
Для кнопки ЗАПИСЬ назначим процедуру записи значения текстового поля в клетку К4:
Private Sub CommandButton1_Click()
Cells(4, 11) = TextBox1.Text
EndSub
Со счетчиком (элементом SpinButton1) свяжем процедуру:
Private Sub SpinButton1_Change()
TextBox1.Text = CStr(SpinButton1.Value)
End Sub
Эта процедура выводит в текстовое поле текущее значение счетчика, преобразуя числовое значение счетчика в строковую переменную с помощью функции CStr.
Текстовому полю (элементу TextBox1) назначим процедуру:
Private Sub TextBox1_Change()
SpinButton1.Value = Cint(TextBox1.Text)
End Sub
Эта процедура используется для синхронизации значения счетчика и содержимого текстового поля: преобразует текстовое значение поля в числовое с помощью функции Cint.
Для задания максимального и минимального значения счетчика создадим процедуру:
Private Sub UserForm_Initialize()
SpinButton1.Min = 1
SpinButton1.Max = 10000000
EndSub
После того, как на экран будет выведена форма, с помощью кнопок со стрелками укажите нужное число. Затем нажмите на форме кнопку ЗАПИСЬ. Посмотрите, что будет введено в K4.
Можно перед началом работы со счетчиком в текстовое поле ввести число, а затем использовать счетчик – счетчик будет продолжать работу с этого числа.
Пример 7. Рамки (контейнеры) Frame.
Рамки визуально и логически объединяют некоторые элементы управления (чаще всего флажки и переключатели).
-
Для флажков (элемент управления CheckBox) рамки используются как оформление для элементов управления.
Для объединения группы элементов управления в рамке (см. рисунок), сначала надо на форме расположить рамку, а затем заполнить ее элементами управления.
-
Все переключатели (элемент управления OptionButton), расположенные на одной форме, автоматически объединяются в одну группу. Поэтому из всех этих переключателей выбран может быть лишь один. Как же быть, если на форме надо расположить несколько групп таких переключателей и выбрать один переключатель в каждой группе? Ответ на этот вопрос кроется в использовании рамок (элемент управления Frame). Переключатели, размещенные в пределах одной рамки, обрабатываются отдельно от переключателей, размещенных в других рамках и вне рамок на форме (на форме вместо термина переключатель используется термин радиокнопка).
Пример 8.Полоса прокрутки ScrollBar.
Создайте форму, содержащую две надписи и полосу прокрутки.
Полоса прокрутки используется для плавного изменения каких-либо значений. Например, это может быть выбор параметра из диапазона значений. При настройке этого элемента управления следует учесть, что для его нормальной работы надо установить следующие свойства:
-
Max (Максимум) – минимальное значение полосы прокрутки (только целые неотрицательные числа); -
Min (Минимум) – максимальное значение полосы прокрутки (только целые неотрицательные числа); -
SmallChange (Маленькое изменение) – устанавливает шаг изменения значения при щелчке по одной из стрелок полосы прокрутки; -
LargeChange (Большое изменение) – шаг, с которым меняется значение при перетаскивании бегунка полосы с помощью мыши; -
Value (Значение) – возвращает значение полосы прокрутки (только целые неотрицательные числа).
Элемент управления Scrollbar использует события Scroll и Change, чтобы контролировать движение бегунка по полосе прокрутки.
Событие | Описание |
Change | Происходит после перемещения бегунка, кода кнопка мыши отпущена (или при щелчке мышью по стрелкам на полосе прокрутки). |
Scroll | Происходит при перемещении бегунка (во время перемещения). |
Использование события Scroll обеспечивает доступ к значению полосы прокрутки, когда ее перемещают.
Событие Change происходит после того, как бегунок отпущен, или когда нажаты кнопки прокрутки или полоса прокрутки.
Расположение кнопок полосы прокрутки (горизонтальное или вертикальное) выбирается автоматически в зависимости от ширины и высоты полосы прокрутки.
Введите следующие обработчики событий для полосы прокрутки:
Private Sub ScrollBar1_Scroll()
Label1.Caption = ScrollBar1.Value
End Sub
и
Private Sub ScrollBar1_Change()
Label2.Caption = ScrollBar1.Value
End Sub
Проверьте работу полосы прокрутки.
Пример 9. Использование выбранного из списка (или поля со списком) значения в текстовом поле на форме.
Список
текстовое поле TextBox1 | Private Sub CommandButton1_Click() End End Sub Private Sub ListBox1_Click() With UserForm4 ‘укажитездесьсвоюформу If ListBox1.Text = "Россия" Then TextBox1.Text = "Население России - 140 млн. чел." ElseIf ListBox1.Text = "Китай" Then TextBox1.Text = "Население Китая - 1 млрд. чел." Else TextBox1.Text = "Население Японии - 120 млн. чел." End If End With End Sub Private Sub UserForm_Initialize() With ListBox1 .AddItem "Россия" .AddItem "Китай" .AddItem "Япония" .ListIndex = 0 End With End Sub |
Аналогично, для элемента управления ComboBox1.
Пример 10.Работа с несколькими формами.
Если в вашем проекте имеется несколько форм, вам понадобится работать с ними, показывая и скрывая их при необходимости. Чтобы отобразить форму, воспользуйтесь методом Show (Показать). Для скрытия формы используйте метод Hide (Скрыть).
Создадим несколько форм и настроим навигацию между ними. Одна из форм главная – из нее вызываются остальные формы.
Добавьте в проект три формы. Настройте свойство Caption:
Свойство | Форма №1 | Форма №2 | Форма №3 |
Caption | Главная форма | Первая форма | Вторая форма |
Добавьте на форму UserForm11 (на главную форму) две кнопки. Одну из них подпишите «Показать первую форму», вторую – «Вызвать вторую форму». Эти кнопки должны скрывать форму UserForm1, и вызывать, соответственно, UserForm2 и UserForm3.
На форму UserForm2 добавьте кнопку с надписью «На главную». Нажатие на эту кнопку должно скрывать UserForm2 и отображать UserForm1. Аналогичную кнопку добавьте на UserForm3.
Окно проекта выглядит так:
Создадим обработчик события