VBA w Exce21, excel


VBA w Excelu - kurs dla początkujących

0x01 graphic
Właściwości

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).

0x01 graphic

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.

0x01 graphic

Name:

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:

Obiekt

Przedrostek

Przykład

Etykieta (Label)

lbl

lblPowitanie

Przycisk poleceń (CommandButton)

cmd

cmdUruchom

Pole tekstowe (TextBox)

txt

txtWiek

Obraz (Image)

img

imgTata

Formularz (UserForm)

frm

frmHaslo

0x01 graphic

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.

0x01 graphic

Caption:

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.

0x01 graphic

BackColor:

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.

0x01 graphic

ForeColor:

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.

0x01 graphic

Width:

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.

lblKomunikat.Width = 240

0x01 graphic

Height:

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.

lblKomunikat.Height = 32

0x01 graphic

Top:

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.

0x01 graphic

Left:

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.

0x01 graphic

Font:

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ę.

0x01 graphic

Visible:

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.

0x01 graphic

Przykład:

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.

Kod przykładu:

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

Opis przykładu:

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.

Kroki:

  • Uruchom Microsoft Excel.

  • 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:

    • Name na lblKomunikat

    • Visible na False

  • 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.



Wyszukiwarka

Podobne podstrony:
VBA w Excel7, excel
VBA w Exce13, excel
VBA w Excelu, excel
VBA w Exce18, excel
VBA w Exce17, excel
VBA w Excel3, excel
VBA w Exce14, excel
VBA w Exce16, excel
VBA w Exce11, excel
VBA w Excel4, excel
VBA w Excel1, excel
VBA w Excel5, excel
VBA w Exce15, excel
VBA w Exce12, excel
VBA w Exce23, excel
VBA w Exce25, excel
VBA w Excel6, excel
VBA w Exce10, excel
VBA w Excelu10, excel

więcej podobnych podstron