Kurs VBA – cz. 24 – Formularze – Atrybuty

W części kursu dotyczącej modelu obiektowego Excela opisałem, że każdy obiekt jest wyposażony w zestaw atrybutów, metod i zdarzeń. Atrybuty opisują stan obiektu, metody to procedury uruchamiane przez nas, natomiast zdarzenia uruchamiają się automatycznie. Poniżej opisuję kilka najważniejszych atrybutów występujących w formularzach. W kolejnych częściach kursu omówię najczęściej używane metody i zdarzenia. Ostatecznie podpowiem gdzie szukać dokładnych informacji na temat poszczególnych elementów.

AtrybutyKażdy obiekt na formularzu posiada zestaw atrybutów opisujących jego aktualny stan. Jedne występują we wszystkich obiektach formularzy, inne są specyficzne tylko dla kilku z nich. Wszystkie atrybuty zaznaczonego obiektu można zobaczyć w oknie properties. Znajdują się tam atrybuty aktualnie zaznaczonego obiektu. Jeżeli przypadkiem zamkniemy to okno można je otworzyć przyciskiem F4. Po zaznaczeniu atrybutu i naciśnięciu F1 zobaczymy jego wyczerpujący opis.

Atrybuty możemy przeglądać alfabetycznie, łatwiej w ten sposób je znaleźć, jeżeli pamiętamy nazwę. W innym przypadku lepiej pogrupować po kategoriach. Mamy wtedy obok siebie atrybuty dotyczące jednego typu (wygląd, położenie, zachowanie itp.). Czytaj więcej...

Kurs VBA – cz. 23 – Formularze – Uruchamianie

=&0=&Przed poważnym wgłębieniem się w świat formularzy zobaczmy jak je uruchamiać. Przygotujemy się do zabawy z przykładami w kolejnych częściach kursu.

Po stworzeniu formularza chcemy go udostępnić użytkownikowi, czyli po prostu pokazać na ekranie. Robimy to poprzez wykonanie jednej z metod formularza.

Oczywiście powyższą instrukcję musimy gdzieś umieścić. W części kursu o uruchamianiu makr podanych jest wiele przykładów:

Jeden formularz może też uruchamiać inny. Wystarczy w jednym ze zdarzeń związanych z jednym formularzem uruchomić procedurę Show drugiego formularza.

CmdBtnOpen to nazwa przycisku a Click to nazwa powiązanego zdarzenia. Czytaj więcej...

Kurs VBA – cz. 22 – Formularze – Pierwszy program

Poniżej napiszemy błyskawicznie pierwszy program używający formularzy. Wiemy już jak używać edytora VBE i pisać kod, skupię się więc na elementach tworzenia formularzy. Napiszemy program dodający jednocześnie kilka arkuszy. Formularz będzie zawierał dwa pola. W pierwszym będę wpisywał ilość arkuszy do dodania. W drugim pierwszy człon nazwy. Kolejne arkusze będę się nazywać: nazwa_1, nazwa_2, nazwa_3 itd. Dodam też przycisk uruchamiający samo dodawanie oraz przycisk anulowania. Przyciski i pola na formularzu są często nazywane kontrolkami. Rozpoczynamy od otworzenia nowego skoroszytu. Otwieram VBE , dodaję nowy formularz i zmieniam jego nazwę oraz nagłówek.
Dodawanie nowego formularza
Chciałbym teraz dodać dwa pola i jeden przycisk. Listę kontrolek do dodania znajdę w przyborniku toolbox. Włączę go w górnym menu view/toobox. 
Przybornik zawierający podstawowe kontrolki
Przy pomocy graficznego edytora dodam dwa pola tekstowe. Nie zapominam o nadaniu im odpowiednich nazw. Tak jak to opisałem w przypadku zmiennych, tutaj też jest bardzo istotne aby każdy element miał odpowiednią nazwę. Każde pole musi być odpowiednio opisane, żeby użytkownik wiedział co powinien wpisać. Dodam dwie kontrolki label. Na koniec dodam dwa przyciski z odpowiednimi nazwami i napisami. Zmienię jeszcze rozmiar formularza i mogę go już uruchomić przy pomocy przycisku Play (F5). Formularz można zamknąć krzyżykiem w prawym, górnym rogu. Naciskanie przycisków nic nie da, ponieważ nie dodaliśmy do nich żadnych zdarzeń. Zostało nam tylko dodać kod do przycisków. Znacznie mniej kodu będzie pod przyciskiem Anuluj. Wystarczy kliknąć dwa razy w przycisk Anuluj. Otwiera się edytor z automatycznie utworzonym zdarzeniem: Dodam tutaj jedną instrukcję. Wywołanie specjalnej instrukcji zamykania formularza. Możemy już zamknąć formularz przyciskiem anuluj. Przejdziemy teraz do sedna. Tak samo jak przed chwilą dodajemy zdarzenie cmdAdd_Click(). Jeżeli mamy otwarte okno kodu to możemy przejść do edycji samego formularza klikając dwa razy w jego pozycję w drzewie z lewej strony. Nie będę tutaj analizował powyższego kodu, jest on już dla was na pewno zrozumiały. Teraz uruchamialiśmy formularz z edytora VBE. Musimy udostępnić możliwość wygodnego uruchamiania formularza przez użytkownika. Służy do tego metoda Show formularza. Powyższą instrukcję możemy uruchomić na różne sposoby. Tym razem stworzę w nowym module kodu najprostszą procedurę: Dodam skrót klawiaturowy uruchamiający procedurę ShowForm. Od teraz naciśnięcie ctrl + y pokazuje nasz formularz.

Podsumowanie

 Powyższy kod wykonuje tylko podstawową zaplanowaną funkcjonalność. Oczywiście program można (nawet należy) jeszcze znacznie poprawić, na przykład dodać sprawdzanie czy podana ilość arkuszy ma rozsądną wartość (nie za dużą lub za małą) lub czy nazwa nie zawiera niedozwolonych znaków. W tej chwili pojawi się błąd, jeżeli program spróbuje dodać arkusz o nazwie, która już występuje.

Wstęp Spis treści Uruchamianie Czytaj więcej...

Kurs VBA – cz. 21 – Formularze – Wstęp

Cały kurs VBA zaczyna się generalnym wstępem i instrukcją napisania pierwszego programu, bez wchodzenia w szczegóły. Rozdział o formularzach też tak rozpocznę. Poniżej trochę teorii i ogólników, w następnej części napiszemy pierwszy program używający formularzy. Da nam to generalne pojęcie o temacie.

Do tej pory użytkownik przekazywał programowi informacje głównie przez wypełnianie komórek Excela. W ten sposób trudno jest programiście zapanować nad tym gdzie,co i kiedy użytkownik wpisuje.

Formularze są przeznaczone do sformalizowanej komunikacji z użytkownikiem. Sami decydujemy kiedy taki formularz ma się pokazać. Planujemy ile jakich pól będzie się na nim znajdować, czyli co użytkownik  będzie mógł wpisać. Formularze umożliwiają też strukturyzowanie informacji dla użytkownika w formę o wiele bardziej zaawansowaną niż zwykły arkusz kalkulacyjny z wykresami i tabelkami. Czytaj więcej...

Wyprzedaż książek o Office

Do niedzieli trwa wyprzedaż książek dotyczących pakietu Office w księgarni Helion.pl. Można znaleźć wiele ciekawych pozycji dotyczących Excela, Worda, Outlook i innych.

Oferta książek do 40% taniej.

W promocji można znaleźć najlepszą moim zdaniem książkę na temat VBA (promocja obejmuje wydanie w formie ebooka):

 

Kurs VBA – cz. 20 – Debugging

W ramach kursu napisaliście już nie jeden program i na pewno spotkaliście się z niejednym błędem, który sprawiał, że program nie działał jak powinien. Wszystkie rodzaje błędów jakie możecie napotkać opisałem w cz. 18 – Obsługa błędów. Kiedy już znajdziemy błąd, uporanie się z nim jest stosunkowo proste. Właśnie szukanie ich zajmuje programistom dużo czasu i przyprawia o siwiznę.=&0=&. Nazwa jest może trochę niefortunna, ale powszechnie używana w Polsce. Jest to proces uruchamiania programu krok po kroku w celu znalezienia błędów (bugów) lub po prostu przeanalizowania działania programu.

Powyższa, nieco lakoniczna definicja może być niezrozumiała. Spróbujmy więc debugowania samodzielnie, krok po kroku.

Stwórzmy nowy skoroszyt z najprostszym makrem:

Powyższy program przegląda dziesięć komórek i wpisuje numer wiersza lub losową liczbę, zależnie, czy numer wiersza jest parzysty, czy nie. Po uruchomieniu makra w ułamku sekundy komórki wypełniają się liczbami i pojawia się komunikat. Chcielibyśmy jednak krok po kroku przeanalizować działanie programu. Czytaj więcej...

Kurs VBA – cz. 19 – Nazywanie zmiennych

O zmiennych pisałem już w dziesiątej części. Jeżeli uczciwie przeszedłeś cały kurs to pewnie już dość swobodnie się nimi posługujesz w podstawowym zakresie. Dzisiaj napiszę o często ignorowanym ale bardzo ważnym elemencie zmiennych i stałych, czyli ich nazwie.

Już teraz nadmienię, że koncepcji nazywania zmiennych jest mnóstwo. Poniższa działa dla mnie i proponuję ją stosować oraz ewentualnie później modyfikować. Ostatecznie ważne jest, żeby w ramach jednego projektu konsekwentnie korzystać z jednej konwencji. Czytaj więcej...

Kurs VBA – cz. 18 – Obsługa błędów

Niezależnie jak dokładnie będziemy pisać program i ile do niego przygotowywać, zawsze pojawią się jakieś błędy. Istnieje szereg czynności, które pozwolą nam się do nich przygotować i lepiej z nimi radzić. Czasem możemy nawet świadomie je wywoływać. Najważniejsze jest jednak, żeby w przypadku błędów program zachowywał się w sposób przewidywalny, tak jak to sobie zaplanowaliśmy. Jest to tak samo ważne jak projektowanie samych procedur.

Do najważniejszych zasad należą:
  1. Dokładne projektowanie programu.
  2. Automatyczne sprawdzanie składni (patrz niżej).
  3. Włączenie Option Explicit (patrz niżej)
  4. Tworzenie małych części kodu.
  5. Tworzenie komentarzy
  6. Testowanie aplikacji
Punktowi numer 6 poświęcona zostanie osobna część kursu.
Poniżej zajmiemy się sytuacjami, w których błąd już się pojawił.

Błędy podczas projektowania

Najprostszy i najczęstszy błąd to zwykła literówka. VBE podczas pisania kodu sprawdza czy wszystkie pisane instrukcje są rozpoznawalne. Wszystkie słowa kluczowe są domyślnie kolorowane na niebiesko. Na tym etapie nie są jeszcze sprawdzane funkcje i nazwy zmiennych.
Jeżeli składnia nie będzie odpowiadać VBE, linia zostanie zaznaczona na czerwono, dodatkowo domyślnie pojawi się msgbox z odpowiednią informacją.
Szybko okazuje się, że ten MsgBox jest bardzo irytujący i jeżeli jeszcze go nie wyłączyłeś to można to zrobić w Tools/Options/Auto Syntax Check. Po wyłączeniu tej opcji nieprawidłowe linie wciąż będą się zaznaczać na czerwono, jednak będziemy mogli łatwo przerwać pisanie linii kodu (na przykład, żeby zadeklarować jakąś zmienną).

Błędy podczas uruchamiania

Podczas uruchamiania programu sprawdzane są nazwy wszystkich procedur. Jeżeli gdzieś w kodzie napiszemy funkcję, która nie jest ani wbudowana, ani napisana przez nas to pojawi się ostrzeżenie i uruchamianie zatrzyma się na nazwie uruchamianej procedury.

Option Explicit

Jeżeli chcemy, żeby w tym momencie Excel sprawdzał także poprawność zmiennych, należy na początku modułu napisać instrukcję Option Explicit. Jest do absolutnie kluczowa rzecz, o czym napiszę za chwilę. Jeżeli chcemy, żeby ta instrukcja pojawiała się automatycznie możemy włączyć: Tools/Options/require Variable Declaration i bezwględnie każdy to powinien zrobić.
Po włączeniu tej opcji każda zmienna / stała musi być zadeklarowana przy pomocy instrukcji odpowiednio Dim lub Const, zanim zostanie użyta. Odpowiedni komunikat pojawi się jeżeli użyjemy zmiennej nie zadeklarowanej. Co się stanie, jeżeli nie włączymy tej opcji? Nie musimy deklarować żadnej zmiennej. Odpowiednie miejsce w pamięci zostanie dla niej zajęte w momencie pierwszego użycia i przyjmie typ Variant. Na pierwszy rzut oka może być to wygodne. Jednak:
  • Tracimy kontrolę nad typami zmiennych.
  • Przede wszystkim: Narażamy się na błędy związane z literówkami

Spójrzmy na poniższy kod, option explicit nie zostało użyte. Nie musiałem deklarować zmiennej text.

Przy braku Option Explicit powyższy kod wykona się, jednak nic nie pojawi się w okienku MsgBox ponieważ zostaną utworzone dwie różne zmienne: Text i tekst. Przy włączonym zabezpieczeniu VBE ostrzeże nas, że nie zadeklarowaliśmy zmiennej Text, a chcemy z nią cos robić. Czytaj więcej...

Drugi Ogólnopolski Excelzlot

Dzień dobry,
W weekend 17-18 maja odbył się w Białce Tatrzańskiej drugi ogólnopolski zlot ExcelForum.pl. Zabawa była przednia. Wszystkich chętnych zapraszam do udziału w tej społeczności i wzięcia udziału w zlocie za rok.

 

Kurs VBA – cz. 17 – Dobre praktyki programowania

=&0=&W poprzedniej części napisałem jak przygotować się do pisania programu, najwyższy czas się tym zająć. Jak jednak programować łatwo i przyjemnie? Postaram się przedstawić różne aspekty programowania w VBA i programowania w ogóle, które ułatwią wejście w ten pozornie zawiły świat i mam nadzieję zaoszczędzą dużo kłopotów początkującym programistom.

Na początek napiszę się co sprawia, że dobry kod jest dobry. Później przejdę do praktycznych elementów programowania.

Poszczególne fragmenty są mniej lub bardziej powiązane. Nie odważę się powiedzieć, że pewne zasady są ważniejsze niż inne. Zdecydowanie należy przyswoić sobie je wszystkie i zacząć stosować bez wyjątku. Zaoszczędzicie sobie tym dużo czasu i nerwów. Zapewniam, że wcześniej czy później każda z nich zemści się, jeżeli o niej zapomnimy.

Cechy dobrego kodu Czytaj więcej...