Excel i VBA - formularz UserForm jako interfejs aplikacji excelowej

Czym są formularze Userform w Excelu ?

Formularze służą do budowania interfejsu użytkownika. W Excelu ilość dostępnych elementów kontrolnych jest niewielka, wystarcza to jednak do zbudowania całkiem skomplikowanych aplikacji. Do dyspozycji mamy między innymi przyciski, pola tekstowe, listy, etykiety, pola wyboru, suwaki.

Idea korzystania z przycisków jest podobna jak w przypadku przycisków uruchamiania makra, z tą różnicą że są bardziej konfigurowalne. To znaczy że we właściwościach możemy ustawić widoczność przycisku, stan zablokowania (wyszarzenia) kolor i inne.

Jak wygląda dodawanie formularza do projektu aplikacji

userform_create1.png

Po utworzeniu widzimy coś takiego:

userform_idea.png

Tworzenie projektu formularza

Kontrolki przeciągamy na formularz a następnie zmieniamy ich parametry aby w końcu przypisać do nich wykonanie określonej akcji (makra) przez podwójne kliknięcie na kontrolce i napisanie makra (makro może być też gdzie indziej napisane a my odnosimy się do niego przez podanie jego nazwy)

Dobrą praktyką jest zmiana nazw (właściwość Name) kontrolek na bardziej adekwatne do tego jaką akcję wywołują. Dla przykładu nazwałem przycisk ukrycia makra cmdHide. Nazewnictwo jest dowolne, ale nie powinniśmy stosować polskich znaków takich jak ąęćśźżó. Jeśli chodzi o właściwość Caption to tutaj nie ma żadnych przeciwwskazań do stosowania polskich znaków. Jest to opis przycisku czyli to co będzie widoczne na formularzu.

userform_kod.png

Nie wszystkie kontrolki wymagają przypisania makra
Nie wszystkie kontrolki muszą mieć przypisaną procedurę zdarzenia. Na przykład Etykieta Label ma zadanie bardziej statyczne czyli ma wyświetlać napis który zdefiniujemy we właściwości Caption, oczywiście nic nie stoi na przeszkodzie by ta właściwość uległa zmianie w trakcie działania programu. Można ją zmodyfikować za pomocą makra jeśli wymaga tego sytuacja. Podobnie jest z kontrolkami Text, Ramka, pole wyboru

Brak styczności z arkuszami w trakcie pracy z aplikacją

Choć brzmi to dziwnie można zbudować aplikację w Excelu w której prawie ani przez chwilę nie będzie widać żadnego arkusza a mimo to operacje na arkuszach będą przeprowadzane. Ma to znaczenie, kiedy chcemy utworzyć aplikację bezpieczną i szczególnie prostą w obsłudze.
Ograniczenie dostępu do arkuszy zabezpiecza (przynajmniej częściowo) przed ich modyfikacją która mogłaby doprowadzić do uszkodzenia aplikacji przez użytkownika.

Co zrobić aby po załadowaniu skoroszytu pojawiło się okno formularza
Należy wkleić następujący kod

UserForm1.Show

Należy to zrobić w określonym miejscu o czym pisałem w artykule Excel i VBA automatyczne uruchomienie makra przy otwarciu skoroszytu: sposób 2

Natomiast gdybyśmy chcieli dodatkowo ukryć okno skoroszytu przy starcie to musimy użyć następujących poleceń

ThisWorkbook.Activate
ActiveWindow.Visible = False

userform_kod3.png

Zabezpieczenie przed uszkodzeniem (zapisanie konfiguracji ustawień pasków menu i ich ukrycie)

Samo zabezpieczenie przed użytkownikiem nie wystarczy powinniśmy też uważać na swoje działania w programowaniu.
Jeśli chcemy przeprowadzać jakiekolwiek operacje odnoszące się do interfejsu excela to powinniśmy zapisać aktualny stan parametrów jakie zamierzamy zmieniać. W każdym razie należy upewnić się podczas kończenia pracy aplikacji że zmienione parametry odzyskały swój dawny status. Przywracanie ustawień interfejsu tradycyjną metodą mogłoby użytkownika naszej aplikacji doprowadzić do szewskiej pasji (mam na myśli w szczególności wersję 2010 ze wstążkami jako menu).

Mam świadomość że ten artykuł sam z siebie nie wnosi wielu konkretów dlatego mam zamiar w przyszłości opisać niektóre elementy bardziej szczegółowo i z przykładami.

W trakcie pisania artykułu posiłkowałem się tą książką
Vademecum Walkenbacha

onlyregistered1.png Przydała Ci się ta informacja? Subskrybuj mój kanał RSS, by być na bieżąco z nowymi wiadomościami.

----------------------------------------------------------
TANIE I TERMINOWE PRZEPISYWANIE TEKSTU z: rękopisu, maszynopisu, plików dźwiękowych (kontakt do mnie lub tel kom 513 635 592)
----------------------------------------------------------

Leave a Reply