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