Ниже мы рассмотрим программу в Excel VBA, который создает UserForm, содержащие несколько страниц. Это UserForm также содержит изображение.

Управления многостраничными содержит две страницы. На странице 1, пользователь может заполнить его / ее личной информации. На странице 2, пользователь может указать, какие картины он / она любит больше всего.

Userform Page 1

Userform Page 2

Для создания этого UserForm, выполните следующие действия.

  1. Откройте редактор Visual Basic. Если проводник проекта не отображается, нажмите кнопку Просмотр, Project Explorer.

  2. Нажмите кнопку Вставить, UserForm. Если панель инструментов не появляется автоматически, нажмите кнопку View, Toolbox. Экран должен быть установлен, как показано ниже.

Userform Screen Setup in Excel VBA

  1. Добавьте элемент управления многостраничной, метки, текстовые поля (первый в верхней, второй ниже первого), рамка, кнопки опций (первый слева, во второй справа), окно списка, контроль изображений и командную кнопку. После того, как это было закончено, результат должен быть согласован с пустой версией UserForm, показанной ранее. Например, создать элемент управления многостраничной, нажав на многостраничный из панели инструментов. Далее, вы можете перетащить элемент управления многостраничной на UserForm. Когда вы приедете в Гендерное кадре, не забудьте сделать этот кадр первым, прежде чем разместить две дополнительные кнопки в нем.

  2. Вы можете изменить имена и подписи элементов управления. Имена используются в коде Excel VBA. Титры являются те, которые появляются на экране. Это хорошая практика, чтобы изменить имена элементов управления, но не надо здесь, потому что у нас есть только несколько элементов управления в этом примере. Чтобы изменить заголовок кнопки вкладок UserForm, многостраничные, этикеток, рамок, опционные кнопок и команд, выберите Вид, Свойство окно и нажмите на каждый элементе управления.

  3. Для того, чтобы показать UserForm, поместить командную кнопку на листе и добавьте следующие строки кода:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Сейчас мы собираемся создать Sub UserForm_Initialize. При использовании метода Show для UserForm, этот подпункт будет автоматически выполняться.

  1. Откройте редактор Visual Basic.

  2. В окне Project Explorer, щелкните правой кнопкой мыши на UserForm1, а затем нажмите кнопку Просмотр кода.

  3. Выберите UserForm из списка левого выпадающего списка. Выберите Initialize справа в раскрывающемся списке.

  4. Добавьте следующие строки кода:

Private Sub UserForm_Initialize()

With ListBox1

.AddItem "Mountains"

.AddItem "Sunset"

.AddItem "Beach"

.AddItem "Winter"

End With

End Sub

Объяснение: будет заполнено поле со списком на странице 2.

Теперь мы создали первую часть UserForm. Хотя это выглядит аккуратным уже, ничего не произойдет еще, когда мы выбираем элемент из списка или когда мы нажимаем на кнопку OK.

  1. Загрузите изображения (правая сторона этой страницы) и добавить их в «C: \ Test \»

  2. В окне проекта дважды щелкните на UserForm1.

  3. Дважды щелкните на поле со списком.

  4. Добавьте следующие строки кода:

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

Объяснение: эти строки кода загрузки изображения в зависимости от выбранного элемента в списке.

  1. Дважды щелкните на кнопке OK.

  2. Добавьте следующие строки кода:

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.

  1. Закройте редактор Visual Basic, введите метки, показанные ниже в строке 1 и проверить UserForm.

Результат:

Test the Userform