Formularz użytkownika Excel VBA
Dodaj kontrolki | Pokaż formularz użytkownika | Przypisywanie makr | Przetestuj formularz użytkownika
W tym rozdziale dowiesz się, jak utworzyć Formularz użytkownika Excel VBA. Forma użytkownika, którą utworzymy, wygląda następująco:

Dodaj kontrolki
Aby dodać formanty do 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.

3. Dodaj elementy sterujące wymienione w poniższej tabeli. Po zakończeniu, wynik powinien być zgodny z obrazem formularza użytkownika pokazanym wcześniej. Na przykład utwórz formant pola tekstowego, klikając pole tekstowe z Przybornika. Następnie możesz przeciągnąć pole tekstowe do formularza użytkownika. Po dotarciu do ramy samochodu, pamiętaj, aby narysować tę ramkę najpierw, zanim umieścisz w niej dwa przyciski opcji.
4. Zmień nazwy i podpisy kontrolek zgodnie z poniższą tabelą. Nazwy są używane w kodzie Excel VBA. Napisy są wyświetlane na ekranie. Dobrą praktyką jest zmiana nazw kontrolek. Ułatwi to czytanie Twojego kodu. Aby zmienić nazwy i podpisy elementów sterujących, kliknij opcję Widok, okno Właściwości i kliknij każdy z elementów sterujących.
Kontrola | Imię | Podpis |
---|---|---|
Formularz użytkownika | DinnerPlannerUserForm | Planowanie kolacji |
Pole tekstowe | NameTextBox | |
Pole tekstowe | PhoneTextBox | |
Skrzynka na listy | CityListBox | |
Combo Box | DinnerComboBox | |
Pole wyboru | DateCheckBox1 | 13 czerwca |
Pole wyboru | DateCheckBox2 | 20 czerwca |
Pole wyboru | DateCheckBox3 | 27 czerwca |
Rama | CarFrame | Samochód |
Przycisk opcji | CarOptionButton1 | tak |
Przycisk opcji | CarOptionButton2 | Nie |
Pole tekstowe | MoneyTextBox | |
Przycisk wirowania | MoneySpinButton | |
Przycisk polecenia | OKButton | dobrze |
Przycisk polecenia | ClearButton | Jasny |
Przycisk polecenia | CancelButton | Anuluj |
7 etykiet | Nie ma potrzeby zmiany | Imię i nazwisko :, Numer telefonu: itd. |
Uwaga: pole rozwijane to rozwijana lista, z której użytkownik może wybrać element lub sam wybrać. Można wybrać tylko jeden z przycisków opcji.
Pokaż formularz użytkownika
Aby wyświetlić formularz użytkownika, umieść przycisk polecenia w arkuszu i dodaj następującą linię kodu:
DinnerPlannerUserForm.Show
End Sub
Teraz utworzymy Sub UserForm_Initialize. Gdy użyjesz metody Show dla Userform, to subwoło zostanie automatycznie wykonane.
1. Otwórz Edytor Visual Basic.
2. W eksploratorze projektu kliknij prawym przyciskiem myszy DinnerPlannerUserForm, a następnie kliknij View Code.
3. Wybierz opcję Userform z lewej listy rozwijanej. Wybierz Initialize z prawej listy rozwijanej.
4. Dodaj następujące linie kodu:
"Empty NameTextBox
NameTextBox.Value = ""
"Empty PhoneTextBox
PhoneTextBox.Value = ""
"Empty CityListBox
CityListBox.Clear
"Fill CityListBox
With CityListBox
.AddItem "San Francisco"
.AddItem "Oakland"
.AddItem "Richmond"
End With
"Empty DinnerComboBox
DinnerComboBox.Clear
"Fill DinnerComboBox
With DinnerComboBox
.AddItem "Italian"
.AddItem "Chinese"
.AddItem "Frites and Meat"
End With
"Uncheck DataCheckBoxes
DateCheckBox1.Value = False
DateCheckBox2.Value = False
DateCheckBox3.Value = False
"Set no car as default
CarOptionButton2.Value = True
"Empty MoneyTextBox
MoneyTextBox.Value = ""
"Set Focus on NameTextBox
NameTextBox.SetFocus
End Sub
Objaśnienie: pola tekstowe są opróżniane, pola listy i pola kombi są wypełniane, pola wyboru są odznaczone itd.
Przypisywanie makr
Stworzyliśmy teraz pierwszą część Userform. Mimo, że wygląda już zgrabnie, nic się nie stanie, gdy klikniemy przyciski poleceń w Userform.
1. Otwórz Edytor Visual Basic.
2. W Eksploratorze projektu kliknij dwukrotnie DinnerPlannerUserForm.
3. Kliknij dwukrotnie przycisk Obracaj pieniądze.
4. Dodaj następującą linię kodu:
MoneyTextBox.Text = MoneySpinButton.Value
End Sub
Objaśnienie: ta linia kodu aktualizuje pole tekstowe, gdy używasz przycisku wirowania.
5. Kliknij dwukrotnie przycisk OK.
6. Dodaj następujące linie kodu:
Dim emptyRow As Long
"Make Sheet1 active
Sheet1.Activate
"Determine emptyRow
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1
"Transfer information
Cells(emptyRow, 1).Value = NameTextBox.Value
Cells(emptyRow, 2).Value = PhoneTextBox.Value
Cells(emptyRow, 3).Value = CityListBox.Value
Cells(emptyRow, 4).Value = DinnerComboBox.Value
If DateCheckBox1.Value = True Then Cells(emptyRow, 5).Value = DateCheckBox1.Caption
If DateCheckBox2.Value = True Then Cells(emptyRow, 5).Value = Cells(emptyRow, 5).Value & " " & DateCheckBox2.Caption
If DateCheckBox3.Value = True Then Cells(emptyRow, 5).Value = Cells(emptyRow, 5).Value & " " & DateCheckBox3.Caption
If CarOptionButton1.Value = True Then
Cells(emptyRow, 6).Value = "Yes"
Else
Cells(emptyRow, 6).Value = "No"
End If
Cells(emptyRow, 7).Value = MoneyTextBox.Value
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. Na koniec przekazujemy informacje z Userform do konkretnych kolumn emptyRow.
7. Kliknij dwukrotnie przycisk Wyczyść.
8. Dodaj następującą linię kodu:
Call UserForm_Initialize
End Sub
Objaśnienie: ta linia kodu wywołuje funkcję Sub UserForm_Initialize po kliknięciu przycisku Wyczyść.
9. Kliknij dwukrotnie przycisk Anuluj.
10. Dodaj następującą linię kodu:
Unload Me
End Sub
Objaśnienie: ta linia kodu zamyka formularz Userform po kliknięciu przycisku Anuluj.
Przetestuj formularz użytkownika
Wyjdź z Edytora Visual Basic, wprowadź etykiety pokazane poniżej w rzędzie 1 i przetestuj formularz użytkownika.
Wynik:
