Wcześniej zapoznaliśmy się już wstępnie z właściwościami obiektów, na tej stronie temat rozszerzę i opiszę niektóre z nich. Przedstawię kilka podstawowych właściwości przede wszystkim określające wygląd obiektów.
właściwość - opatrzony nazwą atrybut obiektu. Właściwości definiują takie cechy obiektu jak rozmiar, kolor i położenie na ekranie a także stan obiektu na przykład to czy jest on aktywny czy nieaktywny.
Wartości właściwości możemy odczytywać i modyfikować za pomocą kodu VBA lub w oknie Właściwości czyli Properties. Więcej informacji na temat okna Properties znajdziesz na stronie: Edytor Visual Basic. Aby zmienić wartość własciwości w oknie Properties, w zależności od rodzaju własciwości wykonujemy jedną z nastepujących czynności:
W polu obok nazwy właściwości wpisujemy jej nową wartość. W ten sposób możemy zmieniać takie właściwości jak: Name, Caption, Width, Height, Top czy Left.
Klikamy na pole obok nazwy właściwości a następnie na przycisk z grotem strzałki. Kliknięcie na przycisk powoduje wyświetlenie listy dostępnych wartości dla danej właściwości. Z listy tej wybieramy odpowiednią wartość. Za pomocą tej metody możemy ustawić na przykład: BackColor, ForeColor, Visible, TextAlign.
Klikamy na pole obok nazwy właściwości (na przykład obok nazwy Font) a następnie na przycisk oznaczony wielokropkiem. Kliknięcie na przycisk powoduje wyświetlenie okna dialogowego, w oknie tym możemy ustawić odpowiednie wartości.
UWAGA: W niektórych przypadkach podwójne kliknięcie na pole obok nazwy wybranej właściwości spowoduje zmianę jej wartości (np. właściwość Visible).
Aby określić wartość właściwości za pomocą kodu VBA, stosujemy instrukcje przypisania. Z lewej strony znaku równości określamy obiekt i właściwość a z prawej podajemy wartość tej wlaściwości. W dalszej częsci strony przedstawiam kilka przykładów zastosowania tego sposobu.
Oczywiście różne obiekty posiadają różne zestawy właściwości, odpowiednie dla danego typu obiektu. Właściwości obiektu często związane są z jego metodami i zdarzeniami. Na tej stronie przedstawię niektóre właściwości obiektów przede wszystkim formantów.
Właściwość Name (nazwa) - jest to jeden z najważniejszych atrybutów, przechowuje wyrażenie typu ciąg znaków identyfikujące nazwę obiektu. Jeśli chodzi o nazewnictwo jest to bardzo szeroki temat powiem tylko, że prawidłowa nazwa musi być zgodna z zasadami nazywania obiektów.
Nazwy są tak istotnym elementem, że w momencie gdy wstawiamy obiekt nazwa jest automatycznie generowana. Domyślną nazwą np. formantu niezwiązanego jest nazwa typu obiektu i unikatowy numer. Jeżeli np. do arkusza Excela czy do obiektu UserForm wstawimy formant Etykieta (Label), jego ustawieniem właściwości Name będzie Label1. Jeżeli wstawimy następną Etykietę będzie to Label2 itd. Trzeba jednak zauważyć że nazywanie obiektów według wyżej opisanej konwencji szczególnie budując duże projekty może być bardzo mylące. Na przykład jeśli dodamy dziesięć etykiet to jak zapamiętać akcję, która jest "podczepiona" pod etykietę Label9 ?. Sztuczka polega na tym że można zastąpić nazwy automatycznie nadawane własnymi. Ale jak nadać najlepszą nazwę ?. Istnieje pewna konwencja stosowana w Visual Basic 6, którą ja też stosuję w VBA. Otóż nazwa powinna zawierać skrót identyfikujący typ formantu i nazwę zaczynającą się z dużej litery opisującą do czego formant nam służy. Wstawiając np. Przycisk polecenia (CommandButton), który ma wykonywać akcję obliczania czegoś nadajemy mu nazwę cmdOblicz.
Poniżej przedstawiam najczęściej dodawane przedrostki do nazw obiektów:
Przycisk poleceń (CommandButton)
Właściwość Name czyli nazwę obiektu możemy ustawić w oknie Properties (Właściwości). Nazwa obiektu jest używana w kodzie VBA w czasie działania programu np. do zmiany innej właściwości danego obiektu lub uruchomienia jego metody.
Właściwość Caption (tytuł) - określa jaki tekst jest wyświetlany przez obiekt. Właściwość tą posiadają takie formanty jak np. etykieta, przycisk poleceń, pole wyboru, przycisk przełącznika czy obiekt UserForm. Dla formularza właściwość Caption (czyli tytuł) wyświetlana jest w jego pasku tytułu. Właściwość tą można ustawić za pomocą okna Properties (Właściwości) lub kodu VBA. Sposób zmiany właściwości za pomocą okna Properties poznaliśmy już wcześniej. Aby określić (zmienić) właściwość Caption za pomocą kodu VBA, podczas działania programu możemy napisać:
lblKomunikat.Caption = "Limit przekroczony"
Powyższa linia kodu spowoduje, że etykieta o nazwie (właściwość Name) lblKomunikat będzie wyświetlała test: Limit przekroczony. Oczywiście kod umieszczamy w odpowiedniej procedurze.
Właściwość BackColor (kolor tła) - określa nam kolor wnętrza obiektu. Właściwość tą możemy zmienić w oknie Properties (Właściwości) lub za pomocą kodu VBA wykorzystując funkcję QBColor lub RGB.
lblKomunikat.BackColor = QBColor(14)
Za pomocą tej linii wykorzystując funkcję QBColor określamy kolor tła naszej etykiety lblKomunikat na żółty.
Właściwość ForeColor (kolor tekstu) - określa kolor tekstu wyświetlanego przez formant. Właściwość te możemy zmienić w oknie Properties (Właściwości) lub za pomocą kodu VBA wykorzystując funkcję QBColor lub RGB.
lblKomunikat.ForeColor = RGB(255, 0, 0)
Za pomocą funkcji RGB określamy kolor wyświetlanego tekstu przez nasz formant na czerwony.
Właściwość Width (szerokość) - określa szerokość obiektu (formantu). Właściwość tą możemy określić w oknie Properties (Właściwości) lub za pomocą kodu VBA. Poniżej przedstawiam przykład ustawienia tej właściwości za pomocą kodu VBA.
Właściwość Height (wysokość) - określa wysokość obiektu (formantu). Właściwość tą możemy określić w oknie Properties (Właściwości) lub za pomocą języka VBA. Poniżej przedstawiam przykład ustawienia tej właściwości za pomocą kodu VBA.
Właściwość Top (górny) - określa położenie górnej krawędzi formatu od górnej krawędzi obiektu (arkusz Excela, obiekt UserForm) zawierającego ten formant. Właściwość tą możemy określić w oknie Properties (Właściwości) lub za pomącą języka VBA.
Uwaga: gdy przesuwa się format, nowe ustawienie jego właściwości Top jest automatycznie wprowadzana.
Właściwość Left (lewy) - określa położenie lewej krawędzi formantu od lewej krawędzi obiektu (arkusz Excela, obiekt UserForm) zawierającego ten formant. Właściwości te możemy określić w oknie Properties (Właściwości) lub za pomącą kodu VBA.
Uwaga: gdy przesuwa się format, nowe ustawienie jego właściwości Left jest automatycznie wprowadzana.
Właściwość Font (czcionka) - pozwala wybrać czcionkę z czcionek zainstalowanych w systemie. Oraz na określenie innych parametrów wybranej czcionki takich jak na przykład: styl czcionki czy wielkość. Właściwość tą możemy określić w oknie Properties (Właściwości) lub za pomącą języka VBA. Aby ustawić parametry czcionki w oknie Properties, klikamy na właściwość Font a następnie na przycisk z wielokropkiem. Powinno się otworzyć okno dialogowe w którym możemy wybrać czcionkę i określić jej właściwości. Poniżej przedstawiam jak możemy określić właściwości czcionki za pomocą języka VBA.
lblKomunikat.Font.Size = 24 'Określamy wielkość czcionki na 24. lblKomunikat.Font.Bold = True 'Pogrubiamy naszą czcionkę.
Właściwość Visible (widoczny) - określa czy podczas działania programu formant jest widoczny. Dla tej właściwości używane są następujące ustawienia:
True - (domyślnie) formant jest widoczny.
False - formant jest niewidoczny.
Właściwość tą możemy określić w oknie Properties (Właściwości) lub za pomącą kodu VBA. W oknie Properties klikamy na pole obok nazwy właściwości Visible a następnie na przycisk z grotem strzałki i wybieramy ustawienie. Gdy zaś chcemy zmienić właściwość Visible za pomocą kodu VBA możemy napisać:
lblKomunikat.Visible = True 'Po wykonaniu tej linii kodu etykieta będzie widoczna.
lblKomunikat.Visible = False 'Etykieta staje się niewidoczna.
UWAGA: W trybie projektowania wszystkie formanty będą widoczne, niezależnie od ustawienia właściwości Visible.
Pora na wykorzystanie wiedzy przedstawionej na tej stronie. Poniżej przedstawiam kod przykładu w którym zmieniamy właściwości naszej etykiety w czasie działania programu. Przykład powstał na potrzeby kursu ale możemy go też praktycznie wykorzystać. Możemy na przykład założyć że wartość w komórce D4 jest finalnym wynikiem pewnych obliczeń, może to być bilans budżetu domowego. Nasza etykieta będzie sygnalizowała różne stany tego budżetu.
Private Sub Worksheet_Change(ByVal Target As Excel.Range) Dim Limit Limit = Range("D4").Value If IsNumeric(Limit) = True Then If Limit > 100 Then lblKomunikat.TextAlign = fmTextAlignCenter lblKomunikat.Caption = "Limit przekroczony" lblKomunikat.BackColor = QBColor(14) lblKomunikat.ForeColor = RGB(255, 0, 0) lblKomunikat.Height = 32 lblKomunikat.Width = 240 lblKomunikat.Font.Name = "Arial" lblKomunikat.Font.Size = 24 lblKomunikat.Font.Bold = True lblKomunikat.Visible = True ElseIf Limit > 90 Then lblKomunikat.TextAlign = fmTextAlignCenter lblKomunikat.Caption = "Granica limitu" lblKomunikat.BackColor = QBColor(14) lblKomunikat.ForeColor = RGB(0, 0, 0) lblKomunikat.Height = 16 lblKomunikat.Width = 120 lblKomunikat.Font.Name = "Arial" lblKomunikat.Font.Size = 12 lblKomunikat.Font.Bold = False lblKomunikat.Visible = True Else lblKomunikat.Visible = False End If Else MsgBox "Nieprawidłowy typ danych w komórce D4" lblKomunikat.Visible = False End If End Sub
W przykładzie w zależności od zawartości komórki D4 arkusza Excela wyświetlany jest lub nie odpowiedni komunikat. Kod przykładu umieściliśmy w zdarzeniu Change arkusza Excela. Zdarzenie to zachodzi przy każdej zmianie dokonanej w arkuszu. Jeżeli wartość w komórce D4 jest mniejsza od 90, komunikat czyli nasza etykieta nie jest widoczna. Jeżeli wartość w komórce D4 zawiera się w przedziale od 91 do 100 wyświetlana jest etykieta z napisem: Granica limitu. Gdy przekroczymy wartość 100 napis się zmienia na: Limit przekroczony a etykieta staje się większa i bardziej wyrazista. Do kodu przykładu dodałem też obsługę błędów gdyby w komórce D4 była wprowadzona wartość inna niż numeryczna.
Z menu Widok wybierz Paski narzędzi a następnie Przybornik formantów (jeżeli nie jest widoczny).
W Przyborniku formantów wyszukaj i kliknij na ikonę Etykieta (duże A) a następnie miejsce w arkuszu gdzie chcesz ją umieścić (może to być prawa górna część ekranu, ważne jest aby nasza etykieta nie zasłaniała komórki D4 arkusza). Ikona Tryb projektowania w przyborniku powinna się uaktywnić.
Kliknij prawym przyciskiem myszy na etykiecie (etykieta powinna być zaznaczona jeżeli nie jest wcześniej zaznaczamy ją klikając na niej lewym przyciskiem myszy). Z otwartego menu wybieramy Właściwości, powinno się otworzyć okno Właściwości, w oknie tym zmieniamy następujące właściwości etykiety:
Zamknij okno Właściwości.
Z paska narzędzi Visual Basic wybieramy ikonę Edytor Visual Basic, powinno się otworzyć okno Microsofot Visual Basic....
W oknie tym z menu View (Widok) wybieramy Project Explorer (Eksploator projektu), oczywiście jeżeli okno nie jest widoczne.
W Oknie Eksplorator projektu klikamy dwa razy na obiekt Arkusz1 (Arkusz1), powinno nam się otworzyć okno kodu programu naszego Arkusza1.
W nowo otwartym oknie Zeszyt1-Arkusz1(Code) klikamy na strzałkę w górnej części okna z lewej strony i wybieramy obiekt Worksheet następnie klikamy na strzałkę (u góry) z prawej strony i wybieramy zdarzenie Change. Pomiędzy linie kodu: Private Sub Worksheet_Change(ByVal Target As Excel.Range) i End Sub, wstawiamy (przepisujemy) pozostały kod z przykładu.
Pozamykaj wszystkie okienka, zapisz i zamknij dokument. Po ponownym otwarciu z opcją Włącz makra, przetestuj działanie programu. Oczywiście wprowadź przykładowe wartości do komórki D4 arkusza Excela.
Celem ponownego przetestowania, wpisz inne wartości do komórki D4 arkusza.
|