czwartek, 6 września 2018

VBA – Formularze użytkownika


VBA – Formularze użytkownika

Formularze użytkownika to okna dialogowe tworzone według specyfikacji użytkownika, które sprawiają, że wprowadzanie danych przez użytkownika będzie bardziej sterowalne i łatwiejsze w obsłudze dla użytkownika. W tym rozdziale nauczysz się projektować prosty formularz i dodawać dane do programu Excel.
Krok 1 - Przejdź do okna VBA, naciskając klawisze Alt + F11 i przejdź do menu "Insert" i wybierz " User Form". Po wybraniu formularz użytkownika zostanie wyświetlony w sposób pokazany jak na poniższym zrzucie ekranu.



Krok 2 - Zaprojektuj formularze za pomocą podanych kontrolek.



Krok 3 - Po dodaniu każdego z elementów sterujących należy nadać im nazwy. Podpis odpowiada temu, co pojawia się w formularzu, a nazwa odpowiada logicznej nazwie, która pojawi się podczas pisania kodu VBA dla tego elementu.





Krok 4 - Poniżej podano nazwy dla każdej z dodanych kontrolek.
Kontrolka
Nazwa logiczna
Nazwa
Form
frmPracownik
Dane pracownika
Label
lblIdPracownika
ID Pracownika
Label
lblImie
Imie
Label
lblNazwisko
Nazwisko
Label
lblDataUrodzin
Data Urodzin
Label
lblEmail
E-mail
Label
lblPaszport
Ma paszport
TextBox
txtIdPracownika
NIE MA ZASTOSOWANIA
TextBox
txtImie
NIE MA ZASTOSOWANIA
TextBox
txtNazwisko
NIE MA ZASTOSOWANIA
TextBox
txtEmail
NIE MA ZASTOSOWANIA
ComboBox
cmbDzien
NIE MA ZASTOSOWANIA
ComboBox
cmbMiesiac
NIE MA ZASTOSOWANIA
ComboBox
cmbRok
NIE MA ZASTOSOWANIA
OptionButton
optTak
Tak
OptionButton
optNie
Nie
CommandButton
cmdWyslij
Wyślij
CommandButton
cmdAnuluj
Anuluj
Krok 5 - Dodaj kod dla zdarzenia ładowania formularza, klikając formularz prawym przyciskiem myszy i wybierając opcję  'View Code'.



Step 6 − Select ‘Userform’ from the objects drop-down and select 'Initialize' method as shown in the following screenshot.
Krok 6 - Wybierz "Userform" z menu rozwijanego obiektów i wybierz metodę "Initialize", jak pokazano na poniższym zrzucie ekranu.





Krok 7 - Po załadowaniu formularza upewnij się, że pola tekstowe są wyczyszczone, pola rozwijane są wypełnione i przyciski radiowe są resetowane.
Private Sub UserForm_Initialize()
   'Wyczyszczenie pola tekstowego
    'I umieszczenie w nim kursora
   
    txtIdPracownika.Value = ""
    txtIdPracownika.SetFocus
   
    'wyczyszczenie pozostałych pól
    txtImie.Value = ""
    txtNazwisko.Value = ""
    txtEmail.Value = ""
   
    'wyczyszczenie pól daty
    cmbDzien.Clear
    cmbMiesiac.Clear
    cmbRok.Clear
   
    'wypełnienie pola z dniami
     With cmbDzien
       .AddItem "1"
       .AddItem "2"
       .AddItem "3"
       .AddItem "4"
       .AddItem "5"
       .AddItem "6"
       .AddItem "7"
       .AddItem "8"
       .AddItem "9"
       .AddItem "10"
       .AddItem "11"
       .AddItem "12"
       .AddItem "13"
       .AddItem "14"
       .AddItem "15"
       .AddItem "16"
       .AddItem "17"
       .AddItem "18"
       .AddItem "19"
       .AddItem "20"
       .AddItem "21"
       .AddItem "22"
       .AddItem "23"
       .AddItem "24"
       .AddItem "25"
       .AddItem "26"
       .AddItem "27"
       .AddItem "28"
       .AddItem "29"
       .AddItem "30"
       .AddItem "31"
    End With

    'wypełnienie pola z miesiącami
     With cmbMiesiac
       .AddItem "Styczeń"
       .AddItem "Luty"
       .AddItem "Marzec"
       .AddItem "Kwiecień"
       .AddItem "Maj"
       .AddItem "Czerwiec"
       .AddItem "Lipiec"
       .AddItem "Sierpień"
       .AddItem "Wrzesień"
       .AddItem "Październik"
       .AddItem "Listopad"
       .AddItem "Grudzień"
    End With

    'wypełnienie pola z latami
     With cmbyear
       .AddItem "1980"
       .AddItem "1981"
       .AddItem "1982"
       .AddItem "1983"
       .AddItem "1984"
       .AddItem "1985"
       .AddItem "1986"
       .AddItem "1987"
       .AddItem "1988"
       .AddItem "1989"
       .AddItem "1990"
       .AddItem "1991"
       .AddItem "1992"
       .AddItem "1993"
       .AddItem "1994"
       .AddItem "1995"
       .AddItem "1996"
       .AddItem "1997"
       .AddItem "1998"
       .AddItem "1999"
       .AddItem "2000"
       .AddItem "2001"
       .AddItem "2002"
       .AddItem "2003"
       .AddItem "2004"
       .AddItem "2005"
       .AddItem "2006"
       .AddItem "2007"
       .AddItem "2008"
       .AddItem "2009"
       .AddItem "2010"
       .AddItem "2011"
       .AddItem "2012"
       .AddItem "2013"
       .AddItem "2014"
       .AddItem "2015"
       .AddItem "2016"
       .AddItem "2017"
       .AddItem "2018"
    End With

    'ustawienie przycisków radiowych
    optTak.Value = False
    optNie.Value = False

End Sub

Krok 8 - Teraz dodaj kod do przycisku Wyślij. Po kliknięciu przycisku "Wyślij" użytkownik powinien móc dodać wartości do arkusza roboczego.
Private Sub cmdWyslij_Click()
    Dim pustyRzad As Long   
    'Aktywacja arkusza1
    Arkusz1.Activate
   
    'ustalenie pustyRzad
    pustyRzad = WorksheetFunction.CountA(Range("A:A")) + 1
   
    'przypisanie danych
    Cells(pustyRzad, 1).Value = txtIdPracownika.Value
    Cells(pustyRzad, 2).Value = txtImie.Value
    Cells(pustyRzad, 3).Value = txtNazwisko.Value
    Cells(pustyRzad, 4).Value = cmbDzien.Value & "-" & cmbMiesiac & "-" & cmbRok
    Cells(pustyRzad, 5).Value = txtEmail.Value
   
    If optTak.Value = True Then
        Cells(pustyRzad, 6).Value = "Tak"
    Else
        Cells(pustyRzad, 6).Value = "Nie"
    End If

End Sub

Krok 9 - Dodaj metodę zamknięcia formularza, gdy użytkownik kliknie przycisk Anuluj.
Private Sub cmdAnuluj_Click()   
    Unload Me   
End Sub

Krok 10 - Wykonaj formularz, klikając przycisk "Uruchom". Wprowadź wartości do formularza i kliknij przycisk "Wyślij". Automatycznie wartości wpłyną do arkusza roboczego, jak pokazano na poniższym zrzucie ekranu.






Brak komentarzy:

Prześlij komentarz