/ / Excel VBA Userform z wieloma stronami

Excel VBA Userform z wieloma stronami

Poniżej przyjrzymy się programowi Excel VBA, który tworzy Formularz użytkownika, który zawiera wiele stron. Ten formularz użytkownika zawiera również obrazy.

Kontrola wielu stron zawiera dwie strony. Na stronie 1 użytkownik może podać swoje dane osobowe. Na stronie 2 użytkownik może wskazać, który obraz mu najbardziej odpowiada.

Formularz użytkownika Page 1
Formularz użytkownika Page 2

Aby utworzyć tę Userform, wykonaj następujące kroki.

1. Otwórz Edytor Visual Basic. Jeśli Eksplorator projektu nie jest widoczny, kliknij opcję Widok, Eksplorator projektu.

2. Kliknij Wstaw, Formularz użytkownika. Jeśli Zestaw narzędzi nie pojawi się automatycznie, kliknij opcję Widok, Przybornik. Twój ekran powinien być ustawiony jak poniżej.

Konfiguracja ekranu Userform w programie Excel VBA

3. Dodaj kontrolkę Multipage, etykiety, pola tekstowe (najpierw u góry, drugi pod pierwszym), ramkę, przyciski opcji (najpierw po lewej, drugi po prawej), okno listy, przycisk Kontrola obrazu i polecenie. Po zakończeniu, wynik powinien być zgodny z pustą wersją formularza pokazaną wcześniej. Na przykład utwórz kontrolkę Multipage, klikając opcję Multipage z przybornika. Następnie możesz przeciągnąć kontrolkę Multipage na Userform. Po dotarciu do ramki Płeć, pamiętaj, aby najpierw narysować tę ramkę, zanim umieścisz w niej dwa przyciski opcji.

4. Możesz zmienić nazwy i podpisy kontrolek. Nazwy są używane w kodzie Excel VBA. Napisy są wyświetlane na ekranie. Dobrą praktyką jest zmiana nazw kontrolek, ale nie jest to konieczne, ponieważ w tym przykładzie mamy tylko kilka elementów sterujących. Aby zmienić podpisy w kartach Userform, zakładkach, etykietach, ramce, przyciskach opcji i przycisku poleceń, kliknij opcję Widok, okno Właściwości i kliknij poszczególne elementy sterujące.

5. Aby wyświetlić Formularz użytkownika, umieść przycisk polecenia w arkuszu i dodaj następującą linię kodu:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Teraz utworzymy Sub UserForm_Initialize. Gdy użyjesz metody Show dla Userform, to subwoło zostanie automatycznie wykonane.

6. Otwórz Edytor Visual Basic.

7. W eksploratorze projektów kliknij prawym przyciskiem myszy UserForm1, a następnie kliknij opcję Wyświetl kod.

8. Wybierz opcję Userform z lewej listy rozwijanej. Wybierz Initialize z prawej listy rozwijanej.

9. Dodaj następujące linie kodu:

Private Sub UserForm_Initialize()

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

End Sub

Objaśnienie: pole listy na stronie 2 zostanie wypełnione.

Stworzyliśmy teraz pierwszą część Userform. Mimo, że wygląda już schludnie, nic się nie wydarzy, gdy wybierzemy element z pola listy lub gdy klikniemy przycisk OK.

10. Pobierz obrazy (prawa strona tej strony) i dodaj je do "C: test"

11. W Project Explorer dwukrotnie kliknij UserForm1.

12. Kliknij dwukrotnie pole listy.

13. Dodaj następujące linie kodu:

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

Objaśnienie: te linie kodu ładują obraz w zależności od wybranego elementu w polu listy.

14. Kliknij dwukrotnie przycisk OK.

15. Dodaj następujące linie kodu:

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

Objaśnienie: najpierw aktywujemy Arkusz1. Następnie określamy emptyRow. Zmienna emptyRow jest pierwszym pustym wierszem i rośnie za każdym razem, gdy dodawany jest rekord. Następnie przekazujemy informacje z Userform do konkretnych kolumn emptyRow. Na koniec zamykamy formularz użytkownika.

16. Wyjdź z Edytora Visual Basic, wprowadź etykiety pokazane poniżej w rzędzie 1 i przetestuj formularz użytkownika.

Wynik:

Przetestuj formularz użytkownika

Przeczytaj również: