/ / Excel VBA Userform

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:

Formularz użytkownika Excel VBA

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.

Konfiguracja ekranu Userform w programie Excel VBA

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:

Private Sub CommandButton1_Click()

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:

Private Sub UserForm_Initialize()

"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:

Private Sub MoneySpinButton_Change()

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:

Private Sub OKButton_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 = 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:

Private Sub ClearButton_Click()

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:

Private Sub CancelButton_Click()

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:

Przetestuj formularz użytkownika

Przeczytaj również: