Kopalnia wiedzy
Na blogu czeka na Ciebie ponad sto artykułów.
Sprawdź bogatą kolekcję porad i gotowych makr z analizą krok po kroku.
Jeżeli jest jakiś temat, o którym chciałbyś tu przeczytać – daj mi znać.
Myślenie obiektowe
Cechą wspólną wszystkich programów Microsoft Office jest możliwość automatyzacji pracy dzięki VBA. Składnia jest taka sama – różne są natomiast obiekty. W Excelu pracujemy głównie…
Potęga funkcji Excela 365
Excel w wersji 365 jest prawdziwym game-changerem! Dlaczego? Bo otrzymujemy dostęp do funkcji, które wynoszą budowę formuł na całkiem inny poziom. Po pierwsze, złożone megaformuły…
Wspólne wątki w aplikacjach VBA
Tworzenie wysokiej jakości aplikacji VBA wymaga pracy na wielu polach. Głównie ścierają się tutaj dwie rzeczy: kodowanie i projektowanie. Oznacza to, że dobry VBA Developer…
Prawdy i mity o VBA
VBA, mimo podeszłego wieku, wciąż wywołuje wiele kontrowersji. Sporo osób wieściło mu rychły koniec już kilkanaście lat temu, inni zaś zaciekle go bronią do dzisiaj.…
Ścieżka nauki VBA
Wokół VBA narosło przez lata wiele różnych mitów. Jeden z nich mówi o tym, że praca w tym środowisku to głównie nagrywanie makr i ich…
Historia kursów walut
Pobranie aktualnych kursów walut jest zadaniem, które pojawia się często w tutorialach Excela. Zwykle chodzi o rozwiązanie dynamiczne, które odświeży wyniki po kliknięciu w przycisk.…
Power Query w automatyzacji
„Power Query to największa rewolucja w Excelu od czasu tabel przestawnych!”. „Power Query zastąpiło VBA!” Takie opinie stają się coraz bardziej popularne… Faktycznie PQ to…
Walidacja danych
Walidacja danych nazywana jest także kontrolą lub sprawdzaniem poprawności. Opcja ta występuje w Excelu i służy do nakładania ograniczeń na dane wpisywane do komórek. W…
Filtrowanie do osobnych plików
Jednym z najbardziej popularnych tematów w VBA, jest utworzenie raportów dla każdej unikatowej wartości z kolumny. Chodzi tu o przefiltrowanie tabeli według jednego kryterium i…
Tablice jedno i dwuwymiarowe
Praca na tablicach jest chlebem powszednim każdego programisty VBA. Pomimo tego, że możemy tworzyć tablice o wielu wymiarach, w praktyce wystarczą nam dwa. Tablice jedno…
Generowanie liczb losowych
VBA posiada w swojej bogatej kolekcji funkcję Rnd, która jest odpowiednikiem funkcji arkuszowej LOS. Standardowo jej celem jest wylosowanie liczby zmiennoprzecinkowej z przedziału <0,1). Przy…
Nie(d)oceniony rejestrator
W potocznej opinii rejestrator makr jest narzędziem dla początkujących. Jest to tylko część prawdy. Pomimo tego, że posiada liczne ograniczenia – są sytuacje, w których…
Menu kontekstowe
Po wprowadzeniu wstążki w Excelu 2007, obiekt CommandBar zaczął tracić na znaczeniu. Tradycyjne menu i paski narzędzi praktycznie odeszły do lamusa. Obecnie przydają się tylko…
Ostatni niepusty wiersz
Ostatni niepusty wiersz jest jednym z najbardziej popularnych tematów w całym VBA. Sprawa z pozoru wydaje się banalnie prosta. Jak się jednak przekonamy, żadne z…
Przecięcie wiersza i kolumny
Excel nie posiada mechanizmu, który pozwalałby wyróżnić przecięcie aktywnego wiersza z aktywną kolumną. Potrzebujemy makra, które będzie reagować na zmianę zaznaczenia komórki. Jak je napisać?…
Lista rozwijana na formularzu
Lista rozwijana jest łatwa do utworzenia z poziomu Excela. Służy do tego mechanizm sprawdzania poprawności (walidacji danych). Za pomocą formularza UserForm możemy stworzyć dużo bardziej…
Lista zależna na formularzu
Użytkownicy Excela często używają sprawdzania poprawności do tworzenia list kaskadowych. Pierwsza lista zwykle przechowuje unikatowe wpisy np. marki aut. Po wybraniu konkretnej wartości (marki), do…
Numeryczny TextBox
Czasami zdarza się, że chcemy ograniczyć użytkownikowi wpisywanie znaków tylko do cyfr. Przeważnie chodzi o podanie wieku, kodu produktu lub numeru telefonu. W tym celu…
Wysyłka plików mailem
Outlook jest programem z pakietu Office, który chyba najczęściej współpracuje z Excelem w kontekście VBA. To właśnie dzięki niemu możemy zautomatyzować wysyłkę raportów. Taka dystrybucja…
Automatyczny backup
W każdej aplikacji mam makro, które automatyzuje mi tworzenie backupu. Kopię pliku zapisuję na swoim dysku jak i w chmurze. Ten backup tworzy się w…
Miniaturki produktów
Dość często dostaję zapytania o przygotowanie cennika w Excelu. Zazwyczaj, oprócz specyfikacji i cen, Klienci chcą w nim także umieścić miniaturki produktów. Jak to zrobić,…
Ochrona danych wrażliwych
W Excelu często korzystamy z tzw. danych wrażliwych. Mogą to być ceny produktów, marże sprzedażowe, dane osobowe pracowników lub inne poufne informacje. Ochrona danych ma…
Obliczanie dniówki
Excel jest świetny w obliczaniu czasu pracy i wynagrodzeń pracowników. Niedawno napisałem o formule, która pozwala w prosty sposób obliczyć dniówkę dla różnych stawek godzinowych.…
Abecadło formularza
Formularze użytkownika to najważniejszy element interfejsu aplikacji EXCEL/VBA. Aby prawidłowo z nich korzystać musimy dobrze zrozumieć jak działa obiekt UserForm. W kodzie VBA możemy spotkać…
Formularz jako klasa
Formularz użytkownika jest przykładem klasy, dlatego w kodzie VBA powinniśmy się odwoływać do jego publicznych metod i właściwości. Niestety większość osób tego nie wie i…
Niedoceniane skróty w Excelu
Excel posiada w swoim zbiorze całą gamę skrótów klawiaturowych. Niedoceniane skróty to takie, które w mojej ocenie powinny być używane częściej. Ich przyswojenie na pewno…
Pułapka filtra zaawansowanego
Jednym z moich ulubionych narzędzi w Excelu jest filtr zaawansowany. Jego potęgę widać zwłaszcza w kontekście budowania raportów VBA. W tej notce chciałbym jednak dość…
Nazwa kodowa arkusza
W VBA możemy się odwołać do wybranego arkusza na kilka sposobów. Rozwiązaniem najbardziej popularnym jest użycie nazwy zakładkowej. Możemy również bazować na pozycji arkusza w…
Przewaga słownika nad kolekcją
Kolekcja jest zbiorem obiektów tego samego typu. W Excelu mamy m.in. kolekcję skoroszytów, arkuszy, komórek, wykresów, tabel przestawnych czy kształtów. Z poziomu VBA możemy alternatywnie…
Data utworzenia i modyfikacji pliku
Data utworzenia i modyfikacji pliku mogą być odczytane w VBA na kilka sposobów. Co ciekawe, dają one różne wyniki. Nie jest to jednak żaden błąd…
Dodawanie czasu w VBA
Dodawanie czasu do daty możemy wykonać na wiele różnych sposobów. Najbezpieczniej jest to zrobić za pomocą wbudowanej funkcji. VBA oferuje pod tym względem szerokie pole…
Zakres do obrazka
Excel nie posiada narzędzia, które pozwalałoby na zapisanie zakresu komórek do pliku graficznego w wysokiej rozdzielczości. Obiekt Range – o dziwo – nie posiada metody…
Kłopotliwa transpozycja
Transpozycja danych to operacja w Excelu, która pozwala zamienić miejscami wiersze z kolumnami. Możemy jej używać również w VBA za pomocą funkcji TRANSPOSE. W tym…
Efektowne menu na wstążce
Wstążka, obok formularzy UserForms, stanowi najważniejszy element interfejsu w aplikacjach EXCEL/VBA. Klienci zawsze chcą menu, które jest przyjazne i intuicyjne w obsłudze. Najlepiej takie, które…
Galeria na wstążce
Galeria jest być może najbardziej efektowną kontrolką jaką możemy umieścić na karcie wstążki. Jest rozwinięciem listy rozwijanej i świetnie sprawdza się gdy mamy do wyboru…
Lista rozwijana z ikonami
Lista rozwijana jest kontrolką, która niewątpliwie wzbogaca interfejs aplikacji EXCEL/VBA. W odróżnieniu od standardowego pola kombi, możemy do niej dodać ikonę. Jak przygotować taką kontrolkę…
Wybór na kontrolce typu ListBox
Kontrolka typu ListBox służy nam do wyboru jednej lub wielu wartości spośród długiej listy wpisów. Pracując na formularzu, często niejako wymuszamy na użytkowniku zaznaczenie przynajmniej…
Kłopoty z LBound
Pewnym problemem VBA i innych języków programowania jest to, że odliczanie często rozpoczynamy od 0, a nie od 1. W przypadku tablic, pozycją pierwszego elementu…
Kalendarz na formularzu – alternatywa
VBA nie posiada kontrolki MSForms z kalendarzem, która działałaby dla każdej wersji programu Excel. Niestandardowy DTPicker potrzebuje wersji 32-bitowej – w wersji 64-bitowej kontrolka zniknie…
Przerwanie makra przez CANCEL
W VBA możemy korzystać z procedur zdarzeniowych. Oznacza to, że makra mogą być uruchamiane automatycznie, w momencie zajścia określonego zdarzenia w obrębie arkusza lub skoroszytu.…
Lista arkuszy w polu kombi
W arkuszach jak i na formularzach możemy wykorzystywać ten sam typ kontrolek ActiveX. Niewiele osób korzysta z tej pierwszej możliwości. W tym tekście pokażę jak…
Odwołanie do zakresu komórek
Odwołanie do zakresu komórek można wykonać w VBA na wiele sposobów. Przeważnie w tym celu wykorzystuje się właściwości Range i Cells obiektu Worksheet oraz właściwości…
Zakresy nieciągłe
Zakresy nieciągłe są tematem mało popularnym. W arkuszu zazwyczaj operujemy na tabeli, a nie odrębnych zakresach. Ta sytuacja znajduje swoje odzwierciedlenie w VBA. Operowanie na…
Przeliczanie zakresu komórek
Przeliczanie danych w Excelu zwykle odbywa się w sposób automatyczny lub ręczny. Jednorazowo możemy przeliczyć wszystkie otwarte pliki, a nawet pojedyncze arkusze. Z poziomu VBA…
Celowe wywołanie błędu
Celowe wywołanie błędu w kodzie makra pozwala nam świadomie sterować naszą aplikacją. Instrukcja On Error Resume Next ignoruje błędy, ale dzięki niej możemy w kodzie…
Centralna obsługa błędów
Centralna obsługa błędów to zaawansowany sposób obsługiwania błędów w aplikacjach VBA. Jej głównym zadaniem jest przerwanie działania aplikacji, bez względu na to, w której linii…
Błędy w VBA
Błędy w VBA mogą pojawiać się na każdym etapie pracy z aplikacją – w trakcie pisania kodu, podczas kompilacji projektu, przy debugowaniu lub w trybie…
Instrukcja On Error GoTo -1
W tym artykule wyjaśnię na czym polega instrukcja On Error GoTo -1 i czy jest sens jej używać w aplikacjach EXCEL/VBA. Wpis dedykowany jest głównie…
Instrukcje typu On Error
Polecenie On Error występuje w VBA pod kilkoma różnymi postaciami. W gruncie rzeczy chodzi jednak o zmianę reakcji kompilatora na wypadek błędu. Błąd może zostać…
Błędy w funkcjach SUMA.JEŻELI i SUMA.WARUNKÓW
Funkcje SUMA.JEŻELI i SUMA.WARUNKÓW, jak wskazuje ich nazwa, służą do sumowania wybranych danych. Pierwsza funkcja – niezwykle popularna – pozwala sumować na podstawie jednego założenia,…
Kasowanie pustych arkuszy
Kasowanie pustych arkuszy jest tematem znacznie mniej popularnym od kasowania pustych wierszy w tabeli. Co ciekawe, problem pierwszy występuje bardzo często, jednak w przeciwieństwie do…
Sterowanie typem wykresu
W Excelu warto eksperymentować i wdrażać w życie twórcze pomysły. Czasami przy niewielkim wysiłku można stworzyć narzędzie, które pozwala na dużą elastyczność w analizowaniu danych.…
Sterowanie kolorem tabeli
Warto poświęcić trochę czasu, aby dopracować nasze arkusze pod kątem estetyki. Sterowanie kolorem tabeli przy pomocy formatowania warunkowego i kontrolki ComboBox pozwala szybko zmienić dominujący…
Stałe w kodzie VBA
Stałe skracają i porządkują nasz kod. Warto je przypisywać zwłaszcza do długich ciągów tekstowych – takich jak komunikaty MsgBox lub ścieżki do plików. W tym…
Optymalizacja zakupów
Solver jest fantastycznym narzędziem, który pozwala rozwiązywać problemy optymalizacyjne. Musimy tylko odpowiednio określić zmienne, warunki ograniczające i komórkę celu. Optymalizacja zakupów jest bardzo ciekawym problemem…
Zdarzenia poziomu aplikacji
Możliwość korzystania ze zdarzeń skoroszytu i arkusza pozwala uruchomić makro automatycznie. Do dyspozycji mamy całą gamę zdarzeń związanych z aktywacją, deaktywacją, zmianą zaznaczenia, przeliczaniem itd.…
Właściwości i metody
W VBA pracujemy na obiektach. Obiekty posiadają właściwości i metody – czasami też zdarzenia. Zazwyczaj potrafimy łatwo odróżnić właściwość od metody. Są jednak pewne wyjątki,…
Polskie funkcje w anglojęzycznym Excelu
Korzystając z anglojęzycznej wersji Excela, musimy wpisywać nazwy funkcji w tym języku. Jeżeli do tej pory używaliśmy polskiego Excela – możemy czuć się nieco zagubieni.…
Blokada kopiowania i wklejania
Jeszcze kilka lat temu, użytkownicy Excela ochoczo wykorzystywali mechanizm sprawdzania poprawności do tworzenia list rozwijanych. Okazało się, że w praktyce to rozwiązanie ma wiele wad…
Operator złączenia
Operator złączenia tekstów rzadziej nazywamy jest operatorem konkatenacji (z ang. concatenate – łączyć, powiązać). W VBA bardzo często współpracuje on z cudzysłowem. W tym artykule…
Porównanie binarne i tekstowe
W Excelu możemy porównywać ze sobą nie tylko liczby, ale również tekst. Co więcej – możemy to robić za pomocą znaków arytmetycznych! VBA stosuje porównanie…
Pętla Do While i Do Until
Korzystanie z pętli należy do abecadła programowania bez względu na język, w którym kodujemy. Jednymi z bardziej popularnych konstrukcji są Do While i Do Until.…
Funkcja TRIM w Excelu i VBA
Niektóre funkcje obliczeniowe w Excelu posiadają swoje odpowiedniki w VBA. Pomimo takiej samej nazwy, mają nieco inną budowę lub zwracają inny wynik. Jedną z nich…
Komentarz w chronionym arkuszu
Komentarz standardowo nie może zostać dodany do arkusza chronionego. Podobnie jego edycja w takim arkuszu również jest niemożliwa. Za pomocą pewnej subtelnej zmiany w kodzie…
Błąd 1004 przy ukryciu kolumn
Jednym z błędów, które mogą nam się przytrafić w codziennej pracy z VBA jest błąd 1004. Nie jest to błąd składni czy kompilacji – pojawia…
WYSZUKAJ.PIONOWO vs. wielkość liter?
Funkcja WYSZUKAJ.PIONOWO, jak również kombinacja PODAJ.POZYCJĘ + INDEKS, zachowują się w pewnym obszarze tak samo. Oba rozwiązania zwracają w wyniku pierwszą znalezioną wartość. Są też…
Odświeżenie tabeli przestawnej
Tabele przestawne są jednym z najpotężniejszych narzędzi w Excelu. W praktyce zaobserwowałem jeden drobny problem związany z ich aktualizacją. Odświeżenie tabeli przestawnej czasami powoduje usunięcie…
Porównanie CZY.LICZBA i ISNUMERIC
Sprawdzenie czy wpis w komórce jest liczbą, na ogół sprowadza się do zastosowania funkcji Excelowej CZY.LICZBA. Oprócz tej opcji, VBA oferuje nam również wbudowaną funkcję…
Twarda spacja
W Excelu często przetwarzamy dane pochodzące z różnych systemów informatycznych. Nierzadko musimy poradzić sobie z dziwnymi znakami. Jednym z nich jest tzw. twarda spacja. Jak…
Czas ujemny w Excelu
Czas ujemny nie może zostać wyświetlony w Excelu, o czym nie wszyscy wiedzą. Pewnym rozwiązaniem jest zamiana tych danych na tekst udający liczbę. Jak sobie…
Ukrycie zer na wykresie
Pewną irytującą rzeczą w pracy z wykresami jest wyświetlanie etykiet z wartością zero. W przypadku liczb dodatnich widzimy słupek i przypisaną mu liczbę. W przypadku…
Uciekające formatowanie w HTML
W praktyce bardzo rzadko zapisujemy tabelę Excela do formatu HTML. Warto jednak dowiedzieć się jak zachowuje się formatowanie warunkowe i niestandardowe już po eksporcie do…
Sumowanie według waluty
W tej notce przedstawię sposób na sumowanie według waluty. Excel nie posiada w swoim potężnym arsenale takiej funkcji, więc musimy ją sobie stworzyć sami. Jak…
Solver: wybór optymalnej drużyny
SOLVER to rewelacyjne narzędzie do rozwiązywania problemów optymalizacyjnych. Będziemy wybierać kadrę piłkarzy, którą umownie nazwiemy „drużyną marzeń”. Celem jest to, aby zmaksymalizować wartość drużyny, uwzględniając…
Ukrycie formuł w arkuszu
Ukrycie formuł pozwala na ich ochronę przed podejrzeniem lub ewentualnym usunięciem. Wydawać by się mogło, że takie rozwiązanie wymaga zablokowania komórki. Tak jednak nie jest!…
Czas z Formatu ” 10.659:37 „
W Excelu panuje święta zasada: jedna komórka = jedna informacja. W VBA często przetwarzamy dane pochodzące z różnych systemów IT. Czasami nie są one oddzielone…
Triki Excelowe
Miło mi poinformować, że wydawnictwo EXPLANATOR zdecydowało się wypuścić na rynek specjalny numer miesięcznika Controlling i Rachunkowość Zarządcza poświęcony w całości moim poradom. Triki Excelowe…
Skoroszyt makr osobistych vs. dodatek
Jeżeli chcemy aby nasze ulubione makra były dostępne we wszystkich plikach, to są na to dwa sposoby. Pierwszy – skoroszyt makr osobistych, drugi – dodatek.…
Kody z prefiksem 0 (np. 01234)
Bardzo częstą praktyką stosowaną w firmach jest nadawanie kodów zaczynających się od zera. Wydaje się, że firmy nie wiedzą jaki problem na siebie sprowadzają. Kody…
Błąd Overflow
Błąd Overflow, czyli przepełnienie bufora, to błąd, który w VBA pojawia się dosyć rzadko. Zazwyczaj dotyczy sytuacji, gdy zadeklarowaliśmy zmienną jako Integer i przypisaliśmy do…
Szablon w Excelu
Szablony są bardzo użytecznym, ale mało popularnym narzędziem. Sprawdzają się tam, gdzie musimy – co jakiś czas – uzupełnić tą samą formatkę innymi danymi. Szablon…
Problem z wersją językową
Czy jest możliwe aby wersja językowa Excela była przyczyną „wykrzaczenia” się makra? Otóż tak! W tym artykule opiszę dwa przypadki, w których przełączenie wersji Excela…
Wydruk makr w kolorze
Wydruk makr w kolorze pozwala na łatwiejszą analizę napisanego kodu. Niestety, jedną z wad edytora VBA jest to, że pozwala on tylko na czarno-biały wydruk.…
MZ-Tools. Problem dwukropka
MZ-Tools jest jednym z najbardziej użytecznych dodatków, który wspomaga pisanie makr. Możemy w nim umieszczać całe frazy kodu, a następnie wklejać je do edytora. Widzimy…
Pasek szybkiego dostępu
Pasek szybkiego dostępu został wprowadzony razem ze wstążką w wersji 2007 programu Excel. Jego pojawienie się było pewną rekompensatą za wdrożenie wstążki i rezygnację z…
Lista tabel przestawnych
Tabela przestawna jest jednym z najpotężniejszych narzędzi w Excelu. Jeżeli mamy plik zawierający wiele pivotów, to możemy napisać makro, które tworzy kompletny spis wszystkich tabel przestawnych. Obiekt…
Domyślny szablon arkusza
Sporo osób nie wie o tym, że możemy zmienić domyślny wygląd pliku Excela. Niektóre rzeczy możemy edytować z poziomu opcji programu. Jeśli nam to nie…
Funkcja uniwersalna
Z poziomu VBA możemy tworzyć własne funkcje użytkownika – tzw. UDF. Możemy je wywoływać w swoich makrach jak również korzystać z nich bezpośrednio w komórkach…
Kasowanie wierszy
Istnieje wiele sposobów na kasowanie wierszy z tabeli. Sprowadzają się one do ich faktycznej likwidacji lub przeniesienia niepustych/wybranych wierszy w inne miejsce. Warto zaznaczyć, że…
Ścieżka do pliku z okienka
Jedną z pięciu funkcji, których używam najczęściej jest ta, która pobiera pełną lokalizację pliku. Użytkownik zaznacza w okienku skoroszyt i ścieżka do pliku staje się…
Zmienna nazwa arkusza
Rejestrator makr domyślnie nagrywa nazwę pliku i arkusza, z których pobieramy dane. Problem pojawia się w sytuacji, gdy któraś z tych nazw ulegnie zmianie. Zmienna…
Filtr na tabeli
Jeśli dokonujemy obliczeń – warto się upewnić, że nie mamy wierszy ukrytych filtrem. Niektóre funkcje i instrukcje VBA pomijają dane ukryte i wyniki mogą nas…
Okno Watches
Jednym z narzędzi w edytorze VBA, służącym do debugowania kodu, jest okno Watches. Dzięki niemu możemy monitorować nie tylko wartości zmiennych (publicznych), ale też konkretne…
Średnia bez wartości skrajnych
Idąc z psem na spacer, każdy z nas ma średnio trzy nogi. Ten stary dowcip potwierdza, że bazowanie na średniej mocno wykrzywia obraz rzeczywistości. Tymczasem…
Targi IT
Wczoraj miałem przyjemność być we Wrocławiu na targach Kariera IT organizowanych przez firmę CareerCon. W związku z tym chciałbym się podzielić swoimi odczuciami i przemyśleniami…
Zaufane lokalizacje
W Excelu 2010 pojawiła się fantastyczna opcja Zaufane lokalizacje. Pozwala ona otwierać pliki znajdujące się w konkretnych folderach, bez wyświetlenia ostrzeżenia o makrach! Oczywiście listę…