Formularze VBA

 

Przykłady opisane w tej lekcji dostępne są w arkuszu Excela VBA.xls, tylko ich samodzielne przerobienie daje gwarancję zapamiętania tej lekcji.

Przykłady dla wszystkich lekcji szkolenia Excel 2003: ExcelSzkolenie.pl Cwiczenia Excel 2003.zip

 

 

Edytor VBA umożliwia łatwe – graficzne tworzenie formularzy, dzięki którym możemy udostępnić użytkownikom naszych makr dokonanie wyboru opcji i sposobu działania makra.

 

Aby dodać formularz, najpierw w oknie Project Explorer edytora VBA zaznaczamy plik Excela, do którego formularz ma być dodany, a następnie w wybieramy z menu ‘Insert’ polecenie ‘UserForm’.

 

 

Pusty formularz o nazwie ‘UserForm1’ został dodany do pliku VBA.xls, do kategorii w których do tej pory były: Microsoft Excel Objects i Moduls, dodana została kategoria ‘Forms’ w której jest nasz formularz.

 

 

Usuwanie formularzy VBA przebiega tak samo jak usuwanie modułów, klikamy na formularzu prawym klawiszem myszy i wybieramy polecenie ‘Remove [nazwa formularza]’.

 

 

Aby usunąć formularz w poniższym oknie należy wybrać odpowiedź ‘Nie’, która oznacza że nie chcemy go przenieść przed skasowaniem.

 

 

Wybierzmy polecenie Anuluj.

Jeżeli menu Toolbox nie wyświetli się samo, przy utworzeniu formularza, możemy je pokazać klikając na ikonę zaznaczoną na poniższym rysunku.

Dzięki temu menu możemy dodawać opisy i różnego rodzaju pola do naszego formularza.

 

 

Wielkość Formularza możemy zmieniać przeciągając kwadrat zaznaczony na poniższym rysunku czerwonym prostokątem.

Tytuł formularza zmieniamy w oknie Properties (właściwości), Caption. Tytuł jest wyświetlany na górze formularza i nie pokrywa się z nazwą formularza, która nie jest widoczna dla użytkowników makra.

Nazwę formularza możemy zmienić także w oknie Properties – (Name), w nazwie nie mogą się znajdować znaki spacji.

 

 

Makro korzystające z naszego formularza będzie tworzyć formatkę do przygotowywania nowych ofert.

Podczas zmiany tytułu formularza zostało ukryte menu Toolbox, aby je ponownie zobaczyć wystarczy kliknąć lewym klawiszem myszy na formularzu.

Dodajmy do formularza 5 checkboxów. Parametry czcionki ich opisów możemy zmienić po wybraniu z Properties Font i kliknięciu na mały kwadratowy przycisk z 3 kropkami (zaznaczony na poniższym rysunku).

 

 

Standardowa czcionka jest bardzo mała proponuję zmienić jej wielkość dla wszystkich checkboxów na 11.

 

 

Dodajemy pole tekstowe z poleceniem: ‘1. Wybierz kraj lub kraje’. Zmieniamy opisy checkboxów zgodnie z poniższym rysunkiem.

 

 

Teraz dodamy drugi opis i 2 comboboxy, pierwszy będzie umożliwiał wybór roku, drugi miesiąca.

 

 

Dodamy teraz 2 przyciski (CommandButton).

 

 

Napisy na nich wyświetlane wprowadzamy w oknie Properties – Caption.

Dla wielu programistów (szczególnie początkujących) bardzo ważne jest umieszczenie w stopce informacji kto i kiedy utworzył makro, oraz oczywiście dodanie znaczka copyright :-)

Na tym etapie możemy też ostatecznie dopasować wielkość formularza do jego zawartości.

 

 

W ten sposób utworzyliśmy bardzo ładny formularz, niestety to dopiero początek, aby mógł on działać trzeba będzie do jego aktywnych elementów dodać odpowiedni kod.

Zacznijmy od zmiany nazw, znacznie łatwiej będzie nam pisać i zmieniać kod jeśli np. zamiast Combobox1 element ten będzie nazywał się rok.

Proponuję ustawić następujące nazwy (od góry): Wszystkie, Polska, Ukraina, Rosja, Rumunia, Rok, Miesiac, Utworz, Anuluj. W nazwach nie używamy polskich znaków. Polskie znaki możemy bez najmniejszego ryzyka problemów używać w opisach i polach tekstowych.

 

 

Czas napisać kilka makr, które obsłużą nasz formularz.

Aby umieścić makra w formularzu, najprościej będzie kliknąć dwukrotnie na jego obszarze nie zawierającym żadnych elementów (wykropkowanym).

 

Umieścimy tu marko które będzie samo się uruchamiać po pokazaniu formularza.

Wybieramy ‘UserForm’ i ‘Initialize’ po czym wprowadzamy kod makra, który wypełni dropdown menu: Rok i miesiąc odpowiednimi wartościami.

 

 

Kod makra zamieszczam poniżej:

 

 

Private Sub UserForm_Initialize()

 

'Załadowanie listy argumentów do wyświetlenia

 

Rok.List = Array("2010", "2011", "2012", "2013")

miesiac.List = Array("styczeń", "luty", "marzec", "kwiecień", "maj", "czerwiec", "lipiec", _

"sierpień", "wrzesień", "październik", "listopad", "grudzień")

 

'Ustawienie wartości wyświetlanych domyślnie w okienku listy przewijania

 

miesiac.ListIndex = 0

Rok.ListIndex = 0

 

End Sub

 

 

Po przejściu do widoku formularza i kliknięciu w napis lub kwadracik ‘Wybierz Wszystkie’ VBA ponownie przeniesie nas do makr formularza, wpisany zostanie początek i koniec makra.

Wprowadzamy pozostały kod, który w tym przypadku ustawia wszystkie wartości krajów na True.

Warto zauważyć, że jest to najprostsze możliwe rozwiązanie ponowne kliknięcie ‘Wybierz Wszystkie’ nie odznaczy wszystkich krajów.

 

 

Private Sub Wszystkie_Click()

 

    Polska.Value = True

    Rosja.Value = True

    Ukraina.Value = True

    Rumunia.Value = True

  

End Sub

 

 

Operację tą powtarzamy dla przycisków znajdujących się na formularzu.

Przycisk opisany jako ‘Utwórz Ofertę’ uruchamia makro ‘Utworz’ znajdujące się w module ‘Formularze VBA’.

Polecenie ‘Unload Me’ ukrywa Formularz.

 

 

Private Sub Utworz_Click()

Formularze_VBA.Utworz            'uruchomienie makra ‘Utworz’ znajdującego się w module ‘Formularze_VBA’, pomiędzy nazwą modułu i makra znajduje się kropka.

Unload Me

End Sub

 

 

Jeśli użytkownik kliknie przycisk ‘Anuluj’ nic nie powinno się stać, więc jedyną komendą jest ukrycie formularza.

 

 

Private Sub Anuluj_Click()

Unload Me

End Sub

 

 

Użytkownik naszego pliku z makrem musi mieć możliwość jego prostego uruchomienia.

Proponuję wstawienie do arkuszu przycisku z opisem ‘Uruchom Formularz VBA’.

 

 

Przycisk, którego nazwę możemy pozostawić jako ‘CommandButton1’ powinien pokazywać nasz formularz.

W trybie projektowania (menu ‘Przybornik formantów’) klikamy przycisk prawym klawiszem i wybieramy polecenie ‘Wyświetl kod’.

 

 

Aby pokazać formularz VBA należy wpisać jego nazwę, w naszym przypadku ‘UserForm1’ i po kropce użyć polecenia Show.

 

 

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

 

 

Celem tej lekcji jest zaprezentowanie formularzy VBA więc makro uruchamiane przez formularz nie będzie robić nic skomplikowanego, po prostu wpisze co zostało wybrane do arkusza Excela.

 

 

Sub Utworz()

 

    Polska = UserForm1.Polska.Value

    Rosja = UserForm1.Rosja.Value

    Ukraina = UserForm1.Ukraina.Value

    Rumunia = UserForm1.Rumunia.Value

      

Rok = UserForm1.Rok.Value

miesiac = UserForm1.miesiac.Value

       

'połączenie wybranych krajów w jeden tekst

If Polska Then wybrane_kraje = "Polska "

If Rosja Then wybrane_kraje = wybrane_kraje & "Rosja "

If Ukraina Then wybrane_kraje = wybrane_kraje & "Ukraina "

If Rumunia Then wybrane_kraje = wybrane_kraje & "Rumunia"

 

'wpisanie co wybrano

    Range("b1").FormulaR1C1 = wybrane_kraje

    Range("b2").FormulaR1C1 = Rok

    Range("b3").FormulaR1C1 = miesiac

 

'kasowanie przycisku do uruchamiania formularza

    ActiveSheet.Shapes("CommandButton1").Select

    Selection.Delete

 

End Sub

 

 

Jako ciekawostkę na końcu makra umieściłem polecenie, które kasuje przycisk wyświetlający formularz.

Dzięki temu fragmentowi kodu w danym pliku makro będzie mogło być użyte tylko raz przez osoby nie znające VBA.

 

 

 

Szkolenie Excel 2003                            Szkolenie Excel 2007