Każdy, kto programuje w Excelu na pewno nagrał w życiu przynajmniej jedno makro. Co więcej, wielu z nas zaczynało swoją przygodę z VBA właśnie od analizy zarejestrowanego kodu.
Wady Rejestratora
Wiemy, że rejestrator makr nie jest narzędziem idealnym, a kod nagrany w niczym nie przypomina tego napisanego przez profesjonalistę.
Nie możemy w nim nagrać wielu rzeczy:
- deklaracji zmiennych
- instrukcji warunkowych
- pętli
- obsługi błędów
- modułów klas
Dlaczego zatem korzysta się z rejestratora tak często?
Przyczyna jest prosta. Dostarcza nam on cennych informacji na temat właściwości i metod różnych obiektów, a także stałych, które często pojawiają się w kodzie.
Zalety Rejestratora
Spektrum wykorzystania rejestratora jest tak ogromne, że nie sposób wymienić wszystkich sytuacji. W tym poście opiszę te najczęstsze, gdzie nagranie makra bardzo ułatwia i przyspiesza pracę.
Wstawianie Formuł Do Komórek Arkusza
Bezdyskusyjnie u mnie na pierwszym miejscu.
Idealną formułę możemy sobie nagrać i wkleić ją w odpowiednie miejsce w kodzie. Nazwy funkcji zostają zamienione z polskich na angielskie, średniki na przecinki, a komunikaty tekstowe zostają opatrzone podwójnym cudzysłowem.
Nagranie formuły minimalizuje ryzyko błędu, które jest bardzo duże gdy kopiujemy ręcznie treść formuły z paska.
Arkusz1.Range("Dane").FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-2],Ceny!R1C1:R100C3,3,FALSE),""brak ceny"")"
Obramowanie
Nigdy nie pamiętam właściwości i stałych obiektu Borders, który odpowiada za obramowanie zakresu. Tymczasem wstawienie i usunięcie obramowania do komórek generuje mi bardzo pokaźny kod. W jednej chwili wiem, że całe obramowanie mogę usunąć jedną linią kodu.
Arkusz1.Range("Dane").Borders.Linestyle = xlNone
Analogicznie, chcąc wstawić obramowanie wystarczy zamienić stałą dla stylu linii na xlContinuous (btw. tego nigdy nie potrafiłem wpisać z pamięci 🙂 ).
Sprawdzanie Poprawności
Czasami trzeba wprowadzić określone warunki zapisu do komórek. Na przykład, maksymalna wartość określana jest przez komórkę obok. Jak się do tego zabrać? Na pozór wygląda to strasznie, jednak przy użyciu rejestratora makr jest banalnie proste.
Formatowanie Warunkowe
Sporo osób korzysta w swoich narzędziach z formatowania warunkowego. Rejestrator nagrywa bardzo obszerny kod dotyczący ustanowionych reguł, które możemy bardzo łatwo zmienić z poziomu edytora VB.
Tabele Przestawne
Popularne pivoty mają bardzo dużo obiektów i aby dobrać się do wybranych pól potrzebna jest spora wiedza …. lub nagranie makra.
Przykładowo. Chcąc pominąć określone pole w filtrze tabeli przestawnej otrzymuję taki kod:
ActiveSheet.PivotTables("PivotTable1").PivotFields("Grupa").PivotItems("Telewizory").Visible = False
Formatowanie Niestandardowe
Zamiast wpisywać je bezpośrednio w kodzie makra lub kopiować do edytora VB, zdecydowanie lepiej jest je nagrać i gotowy wynik np. podstawić do stałej.
Kształty i Obiekty
Nagranie makra pozwala nam rozpoznać typ kształtu, a także określić jego dokładną lokalizację w arkuszu.
ActiveSheet.Shapes.AddShape(msoShapeRectangle, 294, 228.75, 158.25, 71.25)
Oprócz tego możemy się skutecznie dobrać do konkretnych właściwości obiektu np. tekstu czy koloru wypełnienia.
Parametry Wydruku
Nagrywając makro przy podglądzie wydruku generuje nam się lista wszystkich właściwości obiektu PageSetup. Możemy usunąć niepotrzebne i zmodyfikować wartości dla tych, które nas interesują (np. szerokość marginesów, teksty w nagłówku i stopce, drukowanie nagłówków i linii siatki).
Kwerendy Sieci WEB
Tutaj w zasadzie nie musimy wiele zmieniać. Zarejestrowane makro spełnia w dużej mierze swoje zadanie, a pokaźna baza właściwości daje nam sporą wiedzę na temat obiektu QueryTable.
Filtr Zaawansowany
Bardzo często korzystam z filtra zaawansowanego w VBA, jednak jego składnia jest tak prosta, że można się jej szybko nauczyć.