fbpx
Minuty czytania: 5

Podstawy VBA

Czy VBA jestem świętym Graalem, rozwiązującym wszystkie problemy jakie masz w Excelu? Najprostsza odpowiedź brzmi NIE. Ale jednocześnie, dzięki znajomości VBA, z pewnością możesz:

  • robić rzeczy jakich nie zrobiłbyś bez tej wiedzy – zyskujesz nowe możliwości,
  • automatyzować pracę swoją i innych – zyskujesz czas.
Podstawy VBA. Kobieta pisząca kod na laptopie.

Tym artykułem rozpoczynam cykl, którym zamierzam w uporządkowany sposób przekazać Ci podstawy VBA. Będę w 100% szczery. Nie jestem mistrzem VBA. Ale pomyślałem, że to może być zaleta. Nie będę mówił do Ciebie jak programista i być może dzięki temu ta wiedza będzie bardziej zjadliwa 😉

Zanim przejdziesz dalej, przeczytaj mój artykuł o rejestrowaniu makr. Dzięki temu zyskasz wiedzę jak:

  • dodać na wstążce kartę DEVELOPER, która zbiera polecenia związane z makrami i VBA,
  • nagrać makro,
  • uruchomić edytor VBA i modyfikować zapisany przez rejestrator kod.

To będzie dobry wstęp, aby ruszyć z dalszą nauką. Takie podstawy podstaw VBA 😉

VBA, czyli manipulowanie obiektami

Visual Basic for Applications (VBA) to język programowania, który pozwala na automatyzację pracy z dokumentami w programach Microsoft Office. Kod VBA będzie zapisany w pliku dokumentu MS Office, np. w arkuszu Excela. To oznacza, że aby wywołać działanie takiego programu potrzebujesz najpierw uruchomić dany program. W naszym przypadku – Excel.

VBA wykorzystuje tzw. model obiektowy. Poprzez pisanie kodu VBA zazwyczaj rozumiemy manipulowanie obiektami. Obiekty mają właściwości i metody, za pomocą których wykonujesz działania na tychże obiektach. I jest to w zasadzie klucz do zrozumienia całego języka. No dobra, ale co to właściwie oznacza?

Posłużę się analogią. Weźmy samochód. Samochód, ma: kolor, wielkość, określony silnik, pojemność i wiek. To właściwości samochodu. Samochód możesz także: uruchomić, ruszyć do przodu, zahamować…etc. – to metody jakich możesz użyć.

Przełóżmy to na język Excela. Jeżeli obiektem będzie pojedyncza komórka (samochód) to jej właściwością może być np. adres (A1), a metodą – wyczyszczenie zawartości (Clear)

Obiekty mogą występować w relacjach, tworząc hierarchię. I znowu posłużmy się analogią. Weźmy dom (obiekt podstawowy). Pojedynczy dom jest częścią osiedla (kolekcja) Natomiast osiedla są częścią dzielnicy, a dzielnice – miasta. Mamy więc kolekcję domów, osiedli i w końcu dzielnic.

W Excel VBA mamy na przykład zakres (może być pojedyncza komórka), która jest obiektem w skoroszycie (skoroszytów może być więcej i tworzą kolekcję), a ten z kolei jest częścią zeszytu (pliku Excela) I tak, przykładowo w VBA aby odwołać się do zakresu / komórki A1 możesz użyć kodu:

Workbooks("Zeszyt1").Worksheets("Arkusz1").Range("A1")

Jak pewnie zauważyłeś odwołanie do kolejnych obiektów następuje z wykorzystaniem „.” (kropki)

Właściwości vs. metody

Jeżeli do tej pory wszystko jest dla Ciebie jasne to jesteś na dobrej drodze, aby opanować podstawy VBA 🙂 Sprawę komplikuje trochę fakt, że zarówno właściwości jak i metod używasz tak samo. Co mam na myśli? Spójrz na przykład:

Range("A1").Address
Range("A1").Select

Jak widzisz, mamy ten sam obiekt – Range(„A1”) ale raz mówimy o właściwości (Address), a raz o metodzie (Select) Skąd właściwie masz wiedzieć co jest czym? O tym nieco później.

Podstawy VBA: Właściwości

Właściwości pojawiają się na końcu hierarchii obiektów. Przykładowo:

 Workbooks("Zeszyt1").Worksheets("Arkusz1").Range("A1").Value

To pewnie zamiesza Ci trochę w głowie ale właściwości mogą także zwracać…obiekty.

Część właściwości możesz tylko odczytać, a część zarówno odczytać jak i zapisać. Na przykład Address to właściwość, którą możesz tylko odczytać. To dość logiczne, bo przecież nie możesz zmienić adresu komórki A1.

Z kolei Value, to przykład właściwości którą możesz zarówno odczytać, jak i zapisać. I to również jest logiczne, bo przecież możesz zarówno odczytać zawartość jakieś komórki, jak i zmienić jej wartość.

Podstawy VBA: metody

Co musisz wiedzieć o metodach? Na początku dwie rzeczy. Po pierwsze metoda może zmienić właściwość. Po drugie część metod, zawiera dodatkowe informacje, które precyzują jej działanie. To argumenty metody.

Przykładowo metoda Clear, może zmienić wartość (Value) komórki, czyli jej właściwość.

Range("A1").Clear

Z kolei metoda PasteSpecial (wklej specjalnie) ma 4 dodatkowe argumenty / parametry: Paste, Operation, SkipBlanks, Transponse. Przykładowo możesz zapisać te dodatkowe parametry w metodzie tak:

Range("B1").PasteSpecial xlPasteValues

ale również tak:

Range("B1").PasteSpecial Paste:=xlPasteValues

Jak widzisz w pierwszym przypadku, od razu podajesz wartość parametru (xlPasteValues, oznacza tu wklejenie wartości), a w drugim następuje przypisanie do danego argumentu za pomocą znaków „:=”.

Podstawy VBA: procedura SUB

W zasadzie jesteś gotowy aby napisać swój pierwszy kod. I zanim zabierzemy się do rzeczy, dwa słowa wprowadzenia.

Zazwyczaj (nie zawsze) kod wpisujesz w procedurze SUB. Wygląda to tak:

Sub JakasNazwa()
...
 Twoj kod
...
End Sub

Procedura Sub to po prostu logiczny zestaw poleceń, który wykonuje jakieś działanie lub zestaw działań. Procedury umieszczasz w modułach (Module) ale to od Ciebie zależy, czy umieścisz wszystkie procedury w jednym module czy rozdzielisz na kilka. Na razie nie musisz się tym przejmować.

Nie będziemy robić nic skomplikowanego i wystarczy nam jedna procedura i jeden moduł. Nasza procedura ma za zadanie skopiować zawartość komórki A1 i wkleić ją jako wartość (bez formuły) do komórki B1.

Co musisz zrobić, aby to osiągnąć?

  • utwórz nowy plik, a następnie w komórce wpisz dowolną formułę. Może być =2+2 😉
  • uruchom edytor VBA (skrót ALT + F11),
  • po lewej stronie, w oknie Project – VBA Project odnajdź nazwę swojego pliku (zapewne Zeszyt1),
  • kliknij prawym przyciskiem myszy na tę nazwę (VBA Project – Zeszyt1) i wybierz INSERT > MODULE,
  • w środkowej części ekranu pojawi się puste okno, gdzie możesz zacząć pisać kod.
Podstawy VBA. Wstawianie modułu.

Sub KopiujWartosci()
 Range("A1").Copy
 Range("B1").PasteSpecial Paste:=xlPasteValues
End Sub

Po wpisaniu kodu, uruchamiasz go skrótem F5. Odpowiednią opcję znajdziesz również na pasku narzędzi.

Podstawy VBA. Pasek narzędzi z poleceniem Uruchom.

Jeżeli będziesz chciał zapisać plik z napisanym właśnie kodem, musisz to zrobić wybierając odpowiedni format pliku – skoroszyt programu Excel z obsługą makr (rozszerzenie pliku .xlsm)

Prześledźmy wspólnie kod linijka po linijce.

 Sub KopiujWartosci()

Zaczynamy od zdefiniowania procedury – słowo kluczowe Sub oraz nazwy KopiujWartosci. Całość kończy się nawiasami. Na marginesie, pomiędzy nawiasami będziesz mógł umieszczać argumenty i przekazywać wyniki z / do innych procedur. Ale póki co – po prostu zostawiamy otwarty i zamknięty nawias. To konieczne dla poprawności składni.

 Range("A1").Copy

Dalej mamy zdefiniowany obiekt Range(„A1”), czyli po prostu komórka A1. Skąd wiadomo z którego arkusza / pliku to będzie komórka? Ponieważ nie definiujemy tego wcześniej (przed Range(„A1”)) będzie to komórka A1 aktywnego arkusza – w momencie uruchomienia kodu.

Następnie, po kropce definiujemy metodę – Copy, czyli po prostu skopiowanie zawartości komórki.

  Range("B1").PasteSpecial Paste:=xlPasteValues

Kolejna linijka, to znowu obiekt – Range(„B1”) oraz metoda PasteSpecial (wklej specjalnie) Dalej korzystamy z parametru xlPasteValues, aby wkleić tylko wartości.

End Sub

Całą procedurę musimy zakończyć słowami End Sub, co jest wymaganą składnią dla poprawności działania całej procedury.


Chcesz darmowy szablon Excel do prowadzenia projektów i śledzenia zadań?


Podsumowanie

Zaryzykuję stwierdzenie, że VBA sprowadza się do manipulowania obiektami: komórkami, zakresami, wykresami, tabelami etc. Przy czym możesz wykorzystywać przy tym elementy charakterystyczne dla „klasycznych” języków programowania takich, jak: pętle, instrukcje warunkowe czy zmienne.

Jeżeli zrozumiesz na czym polega hierarchiczność obiektów (np. komórka w arkuszu, arkusz w skoroszycie) oraz zapamiętasz najważniejsze pojęcia: obiekt, właściwość, metoda to będzie dobry początek aby szybko przyswajać pozostałe elementy VBA.

Mam nadzieję, że wspólnie ze mną 😉 Daj znać w komentarzu, jeżeli masz jakieś pytania albo chciałbyś się podzielić swoimi doświadczeniami w nauce VBA.


Masz problemy z Excelem? Uzyskaj pomoc na grupie Keep Calm And Use Excel.

Kategorie: VBA

4 Komentarze

Tomek · 17 września 2019 o 07:29

Extra, że zacząłeś pisać o VBA. Czekam na więcej!

    Łukasz Pietrzak · 17 września 2019 o 21:23

    Dzięki Tomek! Obiecuję, że będzie więcej;)

Jankesd · 17 września 2019 o 20:24

Dobry wieczór p. Łukaszu. Powiem krótko i zwięźle na temat. Zrobiony art. dotyczący wstępu do VBA jest po prostu bardzo dobry. Napisany językiem prosty dla każdego użytkownika Excela, ale przede wszystkim dla zwykłego Kowalskiego z ulicy. Wytłumaczone jak w najprostszy sposób ,aby każdy mógł zrozumieć bez względu na posiadaną wiedzę z tego tematu. Mam taką nadzieje, iż cały cykli dot. VBA będzie do dla społeczności Excelowej kompendium wiedzy podstawowej i nie tylko z tego zakresu taki mini poradnik, aby pomógł wreszcie zrozumieć co to jest VBA i z czym to się je oraz, aby osoby wreszcie przestały się bać VBA w Excelu. Na koniec proszę zrobić w miarę możliwości na koniec cyklu artykułów w formacie PDF. Ponadto zauważyłem, że ma Pan talent do przekazywania swojej wiedzy z łatwością i widać to na pańskim blogu jak są pisane artykuły, a nie każdy tak potrafi pisać prosto i rzeczowo. Trzymam kciuki za realizację. Ponadto proszę w miarę możliwości rozważyć pisanie innych poradników tematycznych z Excela np. Poradnik Tabele –Przestawne od A do Z

    Łukasz Pietrzak · 17 września 2019 o 21:22

    Bardzo dziękuję za tak miłe słowa 🙂 Nie ukrywam, że bardzo potrzebuję takiego pozytywnego feedbacku, bo to pozwala mi wierzyć że komuś pomagam pisząc artykuły.
    Postaram się spełnić oczekiwania 😉
    Pozdrawiam serdecznie!

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *