UserForm czyli formularz użytkownika
UserForm to mechanizm, który pozwala na zaprojektowanie własnego formularza. Może on zawierać wiele elementów takich jak pole tekstowe, przycisk wyboru, lista rozwijana itp.
Stworzenie takiego formularza odbywa się z poziomu edytora VBA (można użyć skrótu Alt + F11), gdzie poprzez menu kontekstowe dla projektu, albo zakładkę Insert dodaje się nowy UserForm.
Po dwukrotnym kliknięciu w nowo utworzony element pokazuje się pusty formularz. Można go uruchomić z poziomu edytora VBA używając skrótu F5, albo przyciskając na wstążce zieloną strzałkę (Run Sub/UserForm) na pasku narzędzi. Aby zamknąć formularz wystarczy przycisnąć krzyżyk w jego prawym górnym rogu.
Modyfikacja UserForm
Przyszedł czas na modyfikację formularza. Po pierwsze można zmieniać jego rozmiar przez złapanie formularza za krawędź i przesuwanie jego granic. Pozostałe parametry formularza zmieniać można za pomocą okna Properties.
Na początek wystarczy mi zmienić własność Caption, która odpowiada za wyświetlanie nazwy formularza w lewym górnym rogu, oraz (Name), czyli kodową nazwę formularza za pomocą której będę się do niego odnosić.
Do formularza trzeba dodać jego elementy, które pozwolą użytkownikowi na wprowadzanie danych. Najpopularniejszą metodą wprowadzania danych jest ich wpisanie, więc dodam pole tekstowe (TextBox). Kiedy UserForm jest aktywny wyświetla się tzw. Toolbox, który zawiera dostępne kontrolki. Jeśli Toolbox się nie wyświetla to w zakładce View należy go aktywować. Wybieram pole tekstowe i rozciągam do oczekiwanego rozmiaru na polu UserForm.
TextBox jest osobnym obiektem, który ma swoje właściwości, więc po jego zaznaczeniu w oknie Properties pojawiają się nowe parametry. Zamieniam jego (Name) na tbNazwa, aby móc się posłużyć zawartością pola tekstowego do wstawienia jej w komórce arkusza.
TextBox nie posiada właściwości Caption, więc dodaję etykietę z informacją dla użytkownika o tym jakiego rodzaju wartość ma zostać wprowadzona. Etykieta to Label.
Po wprowadzeniu parametru Caption widać, że tekst jest bardzo mały, dlatego aktywuję Font i uruchamiam przycisk z trzema kropkami. Teraz mogę dowolnie modyfikować czcionkę wyświetlaną w etykiecie.
Zdarzenia formularza
Aby formularz prawidłowo funkcjonował potrzebny jest przycisk wstawienia wartości z formularza do komórek Excela. Przy okazji dodam przycisk zamykający formularz. Kontrolka w postaci przycisku to CommandButton.
Obiekty można kopiować dlatego skopiowałem przycisk Wstaw i zmieniłem jego nazwy.
Żeby przyciski działały trzeba pod zdarzenie dotyczące ich kliknięcia wprowadzić odpowiedni kod. Na początek przycisk Anuluj. Klikam go dwukrotnie i pojawia się moduł zdarzeń formularza wraz z procedurą cbAnuluj_Click(). Do tej procedury wprowadzam polecenie, które zamyka formularz.
Teraz wracam do formularza klikając dwukrotnie w jego ikonę w obszarze projektów. Klikam dwukrotnie przycisk Wstaw i wprowadzam polecenia, które wstawiają zawartość UserForm do komórek Excela. Przed pisaniem procedur ustalę jak ma działać formularz. W arkuszu Excela będą etykiety LP i Firma, a pod nimi pojawiać się będą wartości z formularza.
Aby wprowadzać nową firmę do pustego wiersza wprowadzam zmienną NowyWiersz, która będzie obliczana przy każdym wprowadzeniu nowego rekordu. Za pomocą tej zmiennej określę LP dla rekordu, a Firma będzie pobierana z TextBoxa formularza. To oczywiście bardzo prymitywna forma formularza, która będzie wzbogacana o kolejne elementy w innych lekcjach.
Po uruchomieniu formularza i wprowadzeniu jakiejś wartości zauważam jeszcze, że tekst w polu tekstowym jest bardzo mały, a także to, że po wprowadzeniu wartości do komórki TextBox nadal jest wypełniony. Zmieniam w ustawieniach TextBoxa wielkość czcionki, a do kodu wprowadzającego dane dopisuję na końcu polecenie czyszczące pole tekstowe.
Uruchamianie UserForm
Formularz działa już całkiem nieźle, ale pozostaje kwestia jego uruchamiania przez osobę, która nie zna VBA. W tym celu z poziomu zakładki Deweloper wybieram ikonę Wstaw i wybieram Przycisk Polecenia z listy kontrolek ActiveX.
Po rozrysowaniu przycisku na arkuszu przechodzę do jego właściwości (PPM i menu kontekstowe, albo przycisk Właściwości w tej samej zakładce) i zmieniam jego Caption, oraz (Name).
Teraz klikam dwukrotnie w przycisk i do procedury wprowadzam polecenie uruchamiające formularz.
Mój formularz działa już prawidłowo, a w przyszłych lekcjach będę wprowadzał do niego nowe elementy.
Jeśli chcesz zobaczyć w jaki sposób tworzę ten formularz na filmie to sprawdź na YT:
2 thoughts on “UserForm – własny formularz w Excelu”
Fajnie wytłumaczone, dziękuję
Dziękuję 🙂