Start > Kursy on-line > Excel - makra i VBA

Excel - makra i VBA


Formularz UserForm i kontrolki


Załącznik z przykładami dla tego rozdziału znajduje się w tym miejscu.

W tym miejscu omówimy sobie tzw. formularz "UserForm". Wstawiamy go do projektu odpowiednim poleceniem w aktywnym środowisku VBA:3



Wraz z pojawieniem się tego obiektu na liście dostępnych obiektów projektu, pojawia się dodatkowo Toolbox:



Zauważmy, że toolbox zawiera niemal te same elementy, które omawialiśmy sobie przed chwilą (formanty ActiveX) - z tym, że nazwane one są tu kontrolkami. Dla odpowiadających sobie obiektów, właściwości oraz wszystkie inne cechy są identyczne jak przed chwilą omawiane, stąd nie będziemy och powtarzać.
Formularz UserForm posiada własne właściwości, które można wyświetlić używając odpowiedniego polecenia pod prawym klawiszem myszy:




Poza właściwościami bardzo podobnymi do omawianych we wcześniejszym rozdziale, ma jedną bardzo ciekawą: StartUpPosition, dzięki której możemy ustawić, aby formularz ten pojawiał się np. w centrum ekranu ("2 - CenterScreen").

Dodawanie kontrolek do formularza UserForm odbywa się podobnie jak to miało miejsce w przypadku arkusza: należy wybrać odpowiedni element w "Toolbox" i narysować go na formularzu UserForm. Dodajmy np. przycisk oraz pole combo:




W przypadku pola kombi, nadal możliwe jest dodanie zawartości jako referencja do zakresu arkusza. W tym celu musimy zdefiniować właściwość RowSource jako normalne odwołanie (tak jak w formułach, tylko bez znaku równa się:



Nasz przykład odwołuje się do komórek od A1 do A10 arkusza "Arkusz1", w którym umieszczone zostały liczby od 1 do 10. Zdefiniujmy dodatkowo, iż wybór jakiejś liczby spowoduje wpisanie jej do komórki B1 tego samego arkusza. W tym celu kliknijmy dwukrotnie pole kombi i wpiszmy następujący kod:


Private Sub ComboBox1_Change()
Sheets("Arkusz1").Range("B1") = ComboBox1.Value
End Sub
Mając teraz zaznaczony nasz "UserForm" i klikając F5:



możemy sprawdzić, jak działa nasz formularz:



W ten prosty sposób nauczyliśmy się, jak wymieniać informacje pomiędzy formularzem, a arkuszem (w obie strony). Pozostało jeszcze dowiedzieć się jak uruchomić formularz nie wchodząc do środowiska VBA. W tym celu możemy do danego arkusza np. dodać przycisk (formant ActiveX), którego naciśnięcie oprogramujemy:



Użycie jest bardzo proste: wystarczy po nazwie danego formularza UserForm i kropce podać metodę Show - czyli "pokaż". Ukrywanie odbywa się w identyczny sposób, jednak przy użyciu metody "Hide". Przypiszmy ją do przycisku umieszczonego na formularzu UserForm1 (klikając w niego dwukrotnie) i przetestujmy:


Private Sub CommandButton1_Click()
UserForm1.Hide
End Sub