Excel VBA UserForm с несколькими страницами
Ниже мы рассмотрим программу в Excel VBA, который создает UserForm, содержащие несколько страниц. Это UserForm также содержит изображение.
Управления многостраничными содержит две страницы. На странице 1, пользователь может заполнить его / ее личной информации. На странице 2, пользователь может указать, какие картины он / она любит больше всего.
Для создания этого UserForm, выполните следующие действия.
-
Откройте редактор Visual Basic. Если проводник проекта не отображается, нажмите кнопку Просмотр, Project Explorer.
-
Нажмите кнопку Вставить, UserForm. Если панель инструментов не появляется автоматически, нажмите кнопку View, Toolbox. Экран должен быть установлен, как показано ниже.
-
Добавьте элемент управления многостраничной, метки, текстовые поля (первый в верхней, второй ниже первого), рамка, кнопки опций (первый слева, во второй справа), окно списка, контроль изображений и командную кнопку. После того, как это было закончено, результат должен быть согласован с пустой версией UserForm, показанной ранее. Например, создать элемент управления многостраничной, нажав на многостраничный из панели инструментов. Далее, вы можете перетащить элемент управления многостраничной на UserForm. Когда вы приедете в Гендерное кадре, не забудьте сделать этот кадр первым, прежде чем разместить две дополнительные кнопки в нем.
-
Вы можете изменить имена и подписи элементов управления. Имена используются в коде Excel VBA. Титры являются те, которые появляются на экране. Это хорошая практика, чтобы изменить имена элементов управления, но не надо здесь, потому что у нас есть только несколько элементов управления в этом примере. Чтобы изменить заголовок кнопки вкладок UserForm, многостраничные, этикеток, рамок, опционные кнопок и команд, выберите Вид, Свойство окно и нажмите на каждый элементе управления.
-
Для того, чтобы показать UserForm, поместить командную кнопку на листе и добавьте следующие строки кода:
Private Sub CommandButton1_Click() UserForm1.Show End Sub
Сейчас мы собираемся создать Sub UserForm_Initialize. При использовании метода Show для UserForm, этот подпункт будет автоматически выполняться.
-
Откройте редактор Visual Basic.
-
В окне Project Explorer, щелкните правой кнопкой мыши на UserForm1, а затем нажмите кнопку Просмотр кода.
-
Выберите UserForm из списка левого выпадающего списка. Выберите Initialize справа в раскрывающемся списке.
-
Добавьте следующие строки кода:
Private Sub UserForm_Initialize() With ListBox1 .AddItem "Mountains" .AddItem "Sunset" .AddItem "Beach" .AddItem "Winter" End With End Sub
Объяснение: будет заполнено поле со списком на странице 2.
Теперь мы создали первую часть UserForm. Хотя это выглядит аккуратным уже, ничего не произойдет еще, когда мы выбираем элемент из списка или когда мы нажимаем на кнопку OK.
-
Загрузите изображения (правая сторона этой страницы) и добавить их в «C: \ Test \»
-
В окне проекта дважды щелкните на UserForm1.
-
Дважды щелкните на поле со списком.
-
Добавьте следующие строки кода:
Private Sub ListBox1_Click() If ListBox1.ListIndex = 0 Then Image1.Picture = LoadPicture("C:\test\Mountains.jpg") End If If ListBox1.ListIndex = 1 Then Image1.Picture = LoadPicture("C:\test\Sunset.jpg") End If If ListBox1.ListIndex = 2 Then Image1.Picture = LoadPicture("C:\test\Beach.jpg") End If If ListBox1.ListIndex = 3 Then Image1.Picture = LoadPicture("C:\test\Winter.jpg") End If End Sub
Объяснение: эти строки кода загрузки изображения в зависимости от выбранного элемента в списке.
-
Дважды щелкните на кнопке OK.
-
Добавьте следующие строки кода:
Private Sub CommandButton1_Click() Dim emptyRow As Long 'Make Sheet1 active Sheet1.Activate 'Determine emptyRow emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1 'Transfer information Cells(emptyRow, 1).Value = TextBox1.Value Cells(emptyRow, 2).Value = TextBox2.Value If OptionButton1.Value = True Then Cells(emptyRow, 3).Value = "Male" Else Cells(emptyRow, 3).Value = "Female" End If Cells(emptyRow, 4).Value = ListBox1.Value 'Close Userform Unload Me End Sub
Объяснение: во-первых, мы активизируем Лист1. Далее, мы определяем emptyRow. Переменная emptyRow является первой пустой строкой и увеличивает каждый раз, когда добавляется запись. Далее мы передаем информацию из UserForm к определенным столбцам emptyRow. Наконец, мы закрываем UserForm.
-
Закройте редактор Visual Basic, введите метки, показанные ниже в строке 1 и проверить UserForm.
Результат: