Po migracji Blogger – WordPress
Zmiany, zmiany, zmiany
Aktualizacja piątek:
Jak widać, blog jest już przeniesiony. Zajmie jednak jeszcze niego czasu wprowadzenie wszystkich poprawek.
Aktualizacja czwartek:
Dodawanie komentarzy zostało zablokowane do końca tygodnia.
Co się dzieje?
W nocy z piątku na sobotę blog będzie niedostępny/ trudno dostępny/rozsypany.
Dlaczego?
W celu zwiększenia satysfakcji czytelników .. bla bla przenoszę blog z platformy Blogger na WordPress. Da to możliwość dostarczenia wielu nowych ciekawych funkcji. Planów mam w każdym razie całą górę.
Kurs VBA – Klasy – Metody
- hamuj
- przyspieszaj
- włącz światła
- wyłącz swiątła
- otwórz bagażnik
- itd.
Oczywiście w praktyce nie będziemy modelować samochodu. Bardziej praktyczna klasa może służyć do zapisywania danych do pliku. Metody w takiej klasie mogą wyglądać tak:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
Option Explicit Public Sub OpenFile(istr_FileName As String, Optional istr_FilePath As String = "") ... End Sub Public Sub WriteRange(iref_SavedRange As Range) ... End Sub Public Function IsOpen() As Boolean ... End Function Private Sub Close() ... End Sub Private Sub SaveAndClose() ... End Sub |
Mamy powyżej funkcje otwierającą plik, zapisującą do niego itd. W tym modelu jeden obiekt to jeden plik. Jeżeli chcemy otworzyć nowy plik, musimy zainicjować nowy obiekt naszej klasy. Możemy stworzyć kolekcję plików itd.
Jak widać metody definiuje się tak samo jak procedury i funkcje w tradycyjnym module. Metody oznaczone jako Private mogą być wywoływane tylko przez inne metody danej klasy.
Kurs VBA – Klasy – Tworzenie i inicjalizacja
Stworzymy klasę, które będzie przechowywać oraz wypisywać do arkusza dane pracownika.
Definicja klasy
Każda klasa mieści się w osobnym module w pliku Excel. Moduł klasy tworzymy podobnie jak zwykłe moduły z kodem. Klikam prawym przyciskiem na dowolnej pozycji w oknie projektu i wybieram Insert / Class Module.
Jak widać dodał się nowy katalog z nowym modułem. Cały kod zawarty w tym nowym module będzie dotyczył jednej klasy.
Kiedy moduł jest zaznaczony w drzewie projektu, możemy zmienić nazwę klasy w oknie Properties.
Kurs VBA – Klasy – Wstęp, teoria
Abstrakcja
Każdy obiekt w systemie służy jako model abstrakcyjnego „wykonawcy”, który może wykonywać pracę, opisywać i zmieniać swój stan oraz komunikować się z innymi obiektami w systemie bez ujawniania, w jaki sposób zaimplementowano dane cechy. Cyt. Wikipedia
Klasą nazywamy pewien schemat „realnego” bytu. Sama klasa jest dopiero definicją, która jest realizowana przez obiekty danej klasy. Często przytaczanym przykładem jest przypadek samochodu. Klasa to zbiór papierowych czy komputerowych schematów. Określają one rozmiar, możliwe kolory, budowę silnika, sposób użytkowania itd. Obiektem jest natomiast konkretna sztuka auta zbudowana no podstawie tego schematu. Klasę auto możemy zdefiniować w następujący sposób (w kolejnej części kursu napiszę dokładnie jak „pisać” kod klas):
1 2 3 4 5 6 7 8 9 10 11 |
Option Explicit Public pubSpeed As Integer Public Sub SpeedUp() pubSpeed = pubSpeed + 10 End Sub Public Sub SpeedDown() pubSpeed = pubSpeed - 10 End Sub |
Oczywiście pełna definicja klasy realizującej funkcje samochodu, zajęła by tysiące linii. Powyżej mamy tylko dwie metody, realizujące przyspieszanie i zwalnianie, oraz jeden atrybut przechowujący prędkość.
Kurs VBA – cz. 26 – Formularze – Metody
Metody wywołujemy przez połączenie nazwy obiektu i nazwy metody, jak w przypadku każdego innego obiektu.
Najważniejsze metody
Show (pokaż)
Pokazuje formularz. Wspominana już we wcześniejszych cześciach kursu.
Hide (ukryj)
Ukrywa formularz przed użytkownikiem. Wszystkie kontrolki, razem ze swoimi wartościami dalej „istnieją” i możemy się do nich odnosić w programie.
Używamy tej metody, jeżeli przewidujemy, że użytkownik będzie chciał wrócić do tego ekranu i zobaczyć te same wartości, które były, kiedy go opuszczał. Na przykład możemy mieć pomocniczy formularz z listą adresową, który może być otwierany kilka razy, żeby wybrać adres do głównego formularza. Lista będzie uzupełniana tylko przy pierwszym otwarciu.
Kurs VBA – cz. 25 – Formularze – Zdarzenia
W tej części kursu opiszę najważniejsze zdarzenia formularza i jego kontrolek. W zdarzeniach możemy umieścić kod, który uruchomi się automatycznie w odpowiedzi na działanie użytkownika.Jest to główna metoda programowania formularzy. Ostatecznie taka jest ich filozofia, program wyświetla pewien szablon przed użytkownikiem i czeka na jego reakcję. Użytkownik może zacząć wypełniać pierwsze pole, może zacznie od drugiego, może kliknie od razu ok albo się rozmyśli i zamknie okno. Wszystkie te działania uruchamiają określone zdarzenia.
[Pytanie czytelnika] Uzupełnianie combobox lub listbox za pomocą stałej tablicowej
Jeden z użytkowników zadał pytanie:
Standardowo ComboBox czy ListBox mogą pobierać wartości z zakresu komórek arkusza. Czy jest jakiś sposób (trik) by te kontrolki (formanty) mogły być zasilane ze stałej tablicowej?
Pomoc do programu jest w tym przypadku jasna. Pole Input range musi być zakresem. Nie można więc wstawić tam formuły. Załóżmy, że ustawiamy pole combo ten sposób:
W polu A8 nie znajdziemy żadnej wartości z zakresu A1:A5, jedynie indeks wybranej pozycji (1,2,3 itd.). Zakres wejściowy będzie więc potrzebny jeszcze raz, jeżeli chcemy gdzieś wstawić konkretną wybraną wartość (tutaj marzec). =INDEKS(A1:A5,A8)Kurs VBA – cz. 24 – Formularze – Atrybuty
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.).