Visual Basic for Applications
spotkanie 6
Dr inż. Piotr Winiarek
piotrw@ch.pw.edu.pl
GG 30396
Programowanie zorientowane
obiektowo
• Programowanie zorientowane
obiektowo
(ang. object-oriented programming) to
metodologia tworzenia programów
komputerowych, która definiuje programy
za pomocą
"obiektów" - elementów
łączących stan (czyli dane) i zachowanie
(czyli procedury, tu: metody).
Tożsamoś
ć
Stan
Zachowan
ie
Programowanie zorientowane
obiektowo
Obiektowy program komputerowy
wyrażony jest jako zbiór obiektów,
komunikujących się pomiędzy sobą w
celu wykonywania zadań.
Podejście to różni się od tradycyjnego
programowania proceduralnego, gdzie
dane i procedury nie są ze sobą
bezpośrednio związane.
Programowanie obiektowe ma ułatwić
pisanie, konserwację i wielokrotne
użycie programów lub ich fragmentów.
Pierwsze kroki w VBA –
Programowanie obiektowe i
zdarzeniowe
• Obiekty w Excelu
– jest „przedmiotem” kontrolowanym
przez VB
– obiektem jest arkusz, komórka, wykres,
pasek narzędzi, przycisk
– Excel zawiera ponad 100 obiektów
• Obiekty organizowane są w
hierarchii
– niektóre z nich zawierają w sobie inne
obiekty
– np. sam Excel stanowi obiekt zwany
aplikacją, zaś obiekt aplikacja zawiera w
sobie obiekty takie jak: arkusz, paski
narzędzi itd.
Hierarchia obiektów
• Sposób odwoływania się do obiektów:
Budynek.Mieszkanie.Kuchnia.Drzwi
Obiekt główny Obiekty podrzędne
• Instrukcja odsłaniania obiektu
With
Budynek.Mieszkanie.Kuchnia.Drzwi
.Otwórz
‘Metoda obiektu
.Otwarte = True
‘Zmiana właściwości
obiektu
End With
Kolekcje
• niektóre obiekty są do siebie
podobne, np. arkusze w
skoroszycie
• Zbiór danych obiektów stanowi
kolekcję
• Kolekcje są również obiektami!
• Najczęściej używanymi kolekcjami
obiektów Excela są:
• kolekcja Sheets (zawierająca arkusze i
wykresy)
• kolekcja Workbooks
• kolekcja Worksheets
oraz
• kolekcja Windows
Właściwości obiektów
• Właściwości to zbiór cech, które
opisują obiekt i czynią go
użytecznym
– np. obiekt Workbook ma własność
Name, a obiekt Range: Name,
Row, Font itd.
• Właściwość w danej chwili może
przyjmować tylko jedną wartość
Właściwości
• ustawiane mogą być w oknie
właściwości
• lub bezpośrednio w kodzie
obsługi zdarzeń związanych z
obiektem
Właściwości a obiekty
• Najtrudniejszym aspektem do
zrozumienia w Visual Basicu jest
to, że niektóre właściwości są
również obiektami
• Np.:
– Obiekt Range: możemy zmienić
wygląd wybranego zakresu przez
zmianę własności Font
– jednak Font może mieć różne nazwy,
różny rozmiar, itd. Cechy te są
właściwościami czcionki. Ponieważ
Font ma właściwości, Font musi być
obiektem!
Metody
• Właściwości są użyteczne (zmieniamy
wygląd obiektu), niestety nie sterują
one czynnościami, które zamierzamy
wykonać w Arkuszu
• Stąd możliwość obiektów do
wykonywania określonych czynności
Każdemu obiektowi
przypisano odpowiedni zbiór metod
– procedur sterujących
zachowaniem obiektu
Okna dialogu tworzone przez
użytkownika
• Użytkownik może tworzyć i
kontrolować własne obiekty
Excela.
• Podstawą okien dialogowych
tworzonych przez użytkownika są
formy użytkownika (formularze)
będące elementami kolekcji
UserForms.
• Na formularzu rozmieszcza się
obiekty zwane formantami,
których właściwości umożliwiają
przechwycenie kodów akcji
wykonywanych na formantach.
Formy użytkownika
Okno właściwości
Okno eksploratora projektu
Przybornik formantów
Formularz
Formy użytkownika II
Przybornik formantów
Formanty - kontrolki ActiveX
Formanty
1. Wskaźnik do manipulowania formantami.
2. Pole etykiety (Labeln).
3. Pole tekstowe (TextBoxn).
4. Lista kombinowana (ComboBoxn).
5. Lista rozwijana (ListBoxn).
1. 2. 3. 4. 5.
6. 7. 8. 9. 10.
Formanty
6. Pole wyboru (Checkboxn).
7. Przycisk opcji (OptionButtonn).
8. Przycisk przełączania (ToggleButtonn).
9. Ramka grupująca (Framen).
10. Przycisk polecenia (CommandButtonn).
Formanty
11. 12. 13. 14. 15. 16.
11. Pasek tabulatorów (TabStripn).
12. Formularz złożony (Pagen).
13. Pasek przewijania (ScrollBarn).
14. Pokrętło (SpinButtonn).
15. Rysunek (Picturen).
16. Przewijane pole edycji (RefEditn).
Programowanie zdarzeniowe
• W celu obsługi zdarzeń
związanych z danym formantem
przygotowuje się procedury
zdarzeniowe w oknie kodu
formantu.
• Wywołanie procedury
zdarzeniowej:
Private Sub
Zapisz_Click()
Nazwa zdarzenia
Nazwa obiektu
Zdarzenia związane z obiektem
TextBox
Obiekt UserForm - formularz
Podstawowe
właściwości
• Name – nazwa,
identyfikator
• Caption – napis na pasku
tytułu
• BackColor – kolor tła
• ForeColor – kolor napisu
• Picture – przypisanie
rysunku stanowiącego
tło formularza
• ScrollBars – paski
przewijania
• BorderStyle – styl ramki
Najważniejsze
zdarzenia
• Initialize – przed
wyświetle-niem
umożliwia wprowadzenie
wartości początkowych
• Activate – pozwala
przed wyświetleniem
formularza wyczyścić
pola edycji, pola wyboru,
opcje
• Deactivate – po
deaktywacji umożliwia
zapis danych do pliku
lub do arkusza
Formant TextBox
Podstawowe właściwości
• Name – nazwa, identyfikator
• ScrollBars – paski przewijania
• BorderStyle – styl ramki
• Multuline – możliwość pisania w kilku liniach
• TextAlign - wyrównanie tekstu
• PasswordChar – znak wpisywany w miejsce znaków
hasła
• Value – wartość wpisana w polu tekstowym, może
stanowić wartość domyślną
Najważniejsze zdarzenia
• Initialize – przed wyświetle-niem umożliwia
wprowadzenie wartości początkowych
• Click – zdarzenie związane z kliknięciem w polu
tekstowym, pozwala np.: przechwycić zawartość pola
tekstowego do zmiennej
Formant ListBox
Podstawowe
właściwości
• Name – nazwa,
identyfikator
• ColumnCount – liczba
kolumn
• ColumnHeads – nagłówki
kolumn
• ColumnWidth – szerokość
kolumn
• RowSource – zakres,
gdzie są elementy listy
• Value – przechowuje
wybrany przez
użytkownika element listy
• ListIndex – indeks
elementu wybranego z
listy (pierwszy – 0) tylko w
makrach
Najważniejsze
zdarzenia
• Initialize – przed
wyświetle-niem
umożliwia wprowadzenie
wartości początkowych
• Click – zdarzenie
związane z kliknięciem w
polu listy, pozwala np.:
przechwycić wybrany
element do zmiennej
• DblClick – podwójny klik
w element listy – może
służyć np.: do
wyświetlenia informacji
o wybranym elemencie
Formant ComboBox
Podstawowe
właściwości
• Takie, jak ListBox,
dodatkowo:
• Możliwość edycji w
oknie, nowo wpisywany
element ma właściwość
ListIndex = -1
Najważniejsze
zdarzenia
• Takie, jak ListBox
Formanty SpinButton, ScrollBar
Podstawowe
właściwości
• Min – minimalna wartość
pokrętła
• Max – maksymalna
wartość pokrętła
• SmallChange – krok
zmiany
• Orientation –
– 0-fmOrientationVertical
pionowo
– 0-
fmOrientationHorizontal
poziomo
Najważniejsze
zdarzenia
• Change - akcja po zmianie
stanu kontrolki
• Exit - akcja po opuszczeniu
kontrolki
• Enter - akcja po wciśnięciu
klawisza Enter nad
kontrolką
• SpinUp – akcja po
wciśnięciu górnego
przycisku (zwiększenie
wartości) kontrolki
• SpinDown - akcja po
wciśnięciu dolnego
przycisku (zmniejszenie
wartości) kontrolki
Formanty OptionButton i
CheckBox
Podstawowe
właściwości
• Name – nazwa,
identyfikator
• Caption – napis przy
przycisku
• ControlSource –
komórka związana – w
niej pojawia się True lub
False
• Picture – przypisanie
rysunku jako etykiety
przycisku
• Value – stan przycisku
(True lub False)
Najważniejsze
zdarzenia
• Change - akcja po zmianie
stanu kontrolki
• Exit - akcja po
opuszczeniu kontrolki
• Enter - akcja po wciśnięciu
klawisza Enter nad
kontrolką
• Click – akcja po kliknięciu
kontrolki
• DblClick- akcja po
dwukrotnym kliknięciu
kontrolki
dziękuję z uwagę