Formularze VBA

 

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

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

 

Ta lekcja może być obejrzana lub przeczytana poniżej.

Film wygląda najlepiej jeśli będzie odtwarzany w rozdzielczości 720p HD, rozdzielczość można zmienić dopiero po uruchomieniu filmu klikając na ikonie trybika  która pojawi się w prawym dolnym rogu poniższego ekranu. Po kilku sekundach od zmiany obraz wyostrzy się.

 

 

 

 

 

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 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 także opis: ‘2. Wybierz rok i miesiąc’.

 

 

Dodamy teraz 2 przyciski (CommandButton).

 

 

Napisy na nich wyświetlane wprowadzamy w oknie PropertiesCaption.

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, Rosja, Ukraina, 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

 

 

Po tych operacjach pod formularzem będą zapisane następujące makra:

 

 

 

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

Proponuję wstawienie do arkusza 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’.

 

 

Po wstawieniu przycisku w arkuszu jeszcze zanim będziemy mogli go obejrzeć wyświetli się okna z pytaniem jakie makro ma uruchamiać ten przycisk.

Wybierzmy przycisk ‘Nowe’.

 

 

W kodzie makra które zostanie otwarte dopisujemy komendę otwierającą nasz formularz.

Wpisujemy nazwę formularza ‘UserForm1’ i po kropce używamy polecenia Show.

W zależności od wersji oprogramowania zamiast Przycisk5 możemy zobaczyć CommandButton5.

Numer zależy od tego ile wcześniej przycisków wstawialiśmy, należy dostosować kod makr do numeru, który zostanie podany.

 

 

Sub Przycisk5_Kliknięcie()

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.

Poniższe makro należy przekopiować do modułu Formularze_VBA – nazwę tego modułu podaliśmy w makrze uruchamianym po naciśnięciu przycisku Utwórz na naszym formularzu.

 

 

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

 

End Sub