/ / Excel VBA Userform с няколко страници

Excel VBA Userform с няколко страници

По-долу ще разгледаме програма в Excel VBA, която създава потребителска форма, която съдържа няколко страници. Тази потребителска форма съдържа и изображения.

Контролът на няколко страници съдържа две страници. На страница 1 потребителят може да попълни своята лична информация. На стр. 2, потребителят може да посочи коя живопис най-много му харесва.

Потребителска форма Page 1
Потребителска форма Page 2

За да създадете този Userform, изпълнете следните стъпки.

1. Отворете редактора на Visual Basic. Ако Explorer на проекта не е видим, щракнете върху Преглед, Проект Explorer.

2. Щракнете върху Вмъкване, Потребител. Ако Toolbox не се покаже автоматично, кликнете върху View, Toolbox. Вашият екран трябва да бъде настроен, както е описано по-долу.

Настройка на потребителския екран в Excel VBA

3. Добавете контрола за множество страници, етикети, текстови полета (първо в горната част, втората под първата), рамка, опционни бутони (първо вляво, второ в дясно), списъчно поле, управление на изображения и команден бутон. След като това бъде завършено, резултатът трябва да е в съответствие с празната версия на Userform, показан по-рано. Например, създайте контрол на няколко страници, като кликнете върху "Многостраница" от кутията с инструменти. След това можете да плъзнете контрола на няколко страници в Userform. Когато пристигнете в рамката за пола, не забравяйте да рисувате тази рамка преди да поставите двата бутона за избор в нея.

4. Можете да промените имената и надписите на контролите. Имената се използват в кода Excel VBA. Надписите са тези, които се показват на екрана ви. Добра практика е да промените имената на контролите, но това не е необходимо тук, защото имаме само няколко контрола в този пример. За да промените надписа на потребителски формуляри, разделите на няколко страници, етикети, рамки, бутони за избор и командния бутон, щракнете върху Преглед, Прозорец със свойства и щракнете върху всеки контролен панел.

5. За да покажете Userform, поставете командния бутон на работния лист и добавете следния ред:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Сега ще създадем Sub UserForm_Initialize. Когато използвате метода "Показване" за Userform, този под ще се изпълни автоматично.

6. Отворете редактора на Visual Basic.

7. В Project Explorer кликнете с десния бутон на мишката върху UserForm1 и след това върху View Code.

8. Изберете Userform от левия падащ списък. Изберете "Инициализиране" от десния падащ списък.

9. Добавете следните кодови редове:

Private Sub UserForm_Initialize()

With ListBox1
    .AddItem "Mountains"
    .AddItem "Sunset"
    .AddItem "Beach"
    .AddItem "Winter"
End With

End Sub

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

Вече създадохме първата част от Userform. Въпреки че вече изглежда чист, нищо няма да се случи, когато изберем елемент от списъка или когато кликнете върху бутона OK.

10. Изтеглете изображенията (в дясната част на тази страница) и ги добавете в "C: test"

11. В Project Explorer кликнете два пъти върху UserForm1.

12. Кликнете два пъти върху списъка.

13. Добавете следните кодови редове:

Private Sub ListBox1_Click()

If ListBox1.ListIndex = 0 Then
    Image1.Picture = LoadPicture("C:testMountains.jpg")
End If

If ListBox1.ListIndex = 1 Then
    Image1.Picture = LoadPicture("C:testSunset.jpg")
End If

If ListBox1.ListIndex = 2 Then
    Image1.Picture = LoadPicture("C:testBeach.jpg")
End If

If ListBox1.ListIndex = 3 Then
    Image1.Picture = LoadPicture("C:testWinter.jpg")
End If

End Sub

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

14. Кликнете два пъти върху бутона OK.

15. Добавете следните кодови редове:

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.

16. Излезте от редактора на Visual Basic, въведете етикетите показани по-долу в ред 1 и тествайте Userform.

Резултат:

Изпробвайте Userform

Също така се чете: