W tym przykładzie zakładamy, że systematycznie dostajesz dane z systemu do Excela i potrzebujesz je odpowiednio sformatować (m.in. dodać kolumnę obliczającą Zysk). Główne założenia są takie, że ilość wierszy i kolumn w raporcie może się zmieniać, ale zawsze dwie ostatnie kolumny to Sprzedaż i Koszt własny sprzedaży.
W tym przykładzie będzie bardzo istotne wykorzystanie odpowiednich skrótów klawiszowych i pamiętanie o rodzaju odwołań z jakich korzysta rejestrator makr. Chcemy też być mniej zależni od tego jaką komórkę, lub obszar zaznaczy użytkownik. Najłatwiej to tutaj uzyskać wykonując operację zaznaczenia komórki A1 na początku makra. Odwołania względne muszą być tutaj wyłączone.
Wystarczy, że przed włączeniem nagrywania makra zaznaczysz dowolny obszar, a jako pierwszy krok zaznaczysz komórkę A1. Załóżmy, że nadamy makru nazwę Raport i nie przypiszemy do niego skrótu klawiszowego.
Następnie chcemy dołożyć kolumnę obliczającą Zysk. Musimy pamiętać o tym, że ilość kolumn może się zmieniać dlatego nie możemy od razu przeskoczyć do komórki H1, ponieważ to nie zawsze będzie pierwsza pusta kolumna za naszym raportem. Na szczęście możemy wykorzystać skrót klawiszowy Ctrl + strzałka w prawo. Przy tym i podobnych skrótach nie ma znaczenia, czy masz włączoną rejestrację odwołań względnych, czy bezwzględnych, ponieważ te skróty klawiszowe rejestrują się jako specyficzna komenda (kod) VBA.
Korzystając ze skrótu Ctrl + strzałka w prawo przeniesie nas do ostatniej wypełnionej komórki w prawo, a my potrzebujemy przesunąć się jeszcze jedną kolumnę w prawo i zanim to zrobimy już musimy włączyć rejestrację odwołań względnych.
Teraz nie będzie mieć znaczenia czy naciśniesz strzałkę w prawo, czy klikniesz na właściwą komórkę myszką – edytor VBA zarejestruje tą operację tak samo.
Jak już masz zaznaczoną komórkę możesz wpisać do niej tekst Zysk. Po prostu zacznij go pisać i zatwierdź przyciskiem Enter. Enter zadziała na dwa sposoby. Po pierwsze zatwierdzi wpisany tekst, a po drugie przejdzie do komórki poniżej, gdzie będziemy chcieli wpisać formułę obliczającą Zysk:
Przykładowa formuła =F2-G2, wykorzystuje odwołania względne do komórek i dzięki temu też nie jest istotna ilość kolumn w raporcie. Przede wszystkim musisz wiedzieć, że to nie będzie odejmowanie od siebie wartości z kolumny F i G, ale z kolumn o dwie kolumny na lewo od aktywnej kolumny (tej z formułą) i z kolumny o jeden na lewo. Formułę potrzebujemy zatwierdzić skrótem klawiszowym Ctrl + Enter, żeby rejestrator nie dograł nam niepotrzebnych kroków.
Po wpisaniu formuły chcielibyśmy ją skopiować do końca danych, ale niestety standardowa operacja podwójnego kliknięcia w prawy dolny róg komórki z formułą nie zostanie dla nas dobrze zarejestrowana, ponieważ edytor VBA zarejestruje tą operacją jako wpisanie formuły na dokładnie takim obszarze jaki wynika z aktualnych danych aktualnego raportu, a nam zależy, żeby ten obszar się zmieniał w zależności od ilości danych. Dlatego musimy trochę oszukać edytor VBA.
Najpierw skopiujemy formułę (Ctrl + C), następnie przechodzimy o jedną komórkę w lewo i stąd możemy skorzystać ze skrótu klawiszowego Ctrl + strzałka w dół, żeby przejść do ostatniej komórki danych (zakładamy, że wszystkie komórki są wypełnione). Następnie możemy wrócić w prawo jedną kolumnę.
Cały czas powinny być włączone odwołania względne przy rejestrowaniu makra.
Teraz skrót klawiszowy Ctrl + Shift + strzałka w górę, który zaznaczy nam zakres od ostatniego wiersza danych do komórki z formułą. Teraz możemy nacisnąć Ctrl + V, żeby wkleić formułę. Dzięki temu przechodzeniu zakres, w którym wklejamy formułę będzie się zmieniał w zależności od ilości danych.
Możemy też od razu skorzystać, ze skrótu klawiszowego Ctrl + Shift + 4, żeby nałożyć formatowanie walutowe na obszarze naszej formuły.
W naszym raporcie potrzebujemy jeszcze pogrubić nagłówki (jako przykładowe ich formatowanie). Żeby to zrobić możemy nacisnąć skrót klawiszowy Ctrl + Home. Przeniesie on nas dokładnie do komórki A1, mimo, że wciąż mamy włączoną rejestrację odwołań względnych. Następnie wystarczy nacisnąć Ctrl + Shift + strzałkę w prawo, by zaznaczyć wszystkie nagłówki i Ctrl + B, żeby je pogrubić.
Chcemy jeszcze naprawić daty, żeby wyświetlały się jako daty, a nie liczby. Wystarczy, że naciśniemy strzałkę w dół (przejdziemy wtedy względnie z komórki A1 do komórki A2), a następnie Ctrl + Shift + strzałka w dół, żeby zaznaczyć wszystkie daty do końca danych i musimy im zmienić formatowanie liczbowe z ogólnego na formatowanie dat – np. wykorzystując listę rozwijaną z karty Narzędzia Główne.
Została nam ostatnia rzecz przy tym raporcie – na całym obszarze chcemy mieć nałożone obramowanie. Teraz bardzo ważne jest z jakiego skrótu klawiszowego skorzystamy (nie ma znaczenie sposób rejestrowania odwołań). Jeśli skorzystasz ze skrótu klawiszowego Ctrl + A, to edytor VBA zapisze zaznaczenie dokładnie takiego obszaru jaki ma rozmiar aktualny raport, a jeśli skorzystasz ze skrótu klawiszowego Ctrl + Shift + 8, to zostanie zapisane jako zaznaczenie aktualnego zakresu danych, czyli procedury, która będzie zmieniać zaznaczony zakres w zależności od ilości danych.
Po zaznaczeniu danych wystarczy, że nałożysz obramowanie np. wykorzystując polecenie z karty Narzędzia Główne.
Nareszcie nagrywanie naszego makra jest skończone. Dokładną analizą kodu zajmiemy się w następnym odcinku.
Jeśli chcesz sprawdzić, czy działa możesz je uruchomić na następnym arkuszu naciskając skrót Ctrl + F8 i wybierając nasze makro.
Chcesz ze mną poznać możliwości VBA? Zobacz kiedy planowana jest następna edycja 30dniowego kursu online:
https://excelw30dni.pl/kategoria-produktu/szkolenia-vba/
Pozdrawiam
Adam Kopeć
Miłośnik Excela