VBA: Termin płatności VAT-u, PIT-u i ZUS-u

Czyli funkcja VBA, która ustala faktyczny termin płatności, uwzględniająca dni wolne od pracy

Terminy płatności podatków VAT, PIT  czy ZUS są z góry określone, np. VAT powinien być zapłacony do 25 dnia miesiąca. Jeśli jednak ten 25. wypada w dzień wolny od pracy – termin przesuwa się na kolejny dzień roboczy.

W Excelu są genialne funkcje, które umieją określać np. liczbę dni roboczych między dwiema datami czy datę przypadającą po określonej licznie dni roboczych (i można je wykorzystać w formule, o czym będzie w kolejnym artykule). Natomiast tutaj mamy nieco inną sytuację – potrzebujemy sprawdzić czy dany dzień jest dniem roboczym, a jeśli nie – ustalić najbliższy.

Dawno już nie było VBA na blogu, więc w tym artykule opiszę funkcję VBA, która umie taką datę ustalić.

Formatka do zadania dowolna, natomiast koniecznie musimy gdzieś w niej umieścić listę świąt, np. tak:

Formatka

Do dzieła!

Czytaj dalej

Przeszukiwalna lista rozwijana – formuły (Office 365)

Czyli trochę o nowych dynamicznych tablicach

Już w lipcu 2020 wszyscy posiadacze subskrypcyjnej wersji Office’a (Office 365) będą mogli korzystać z nowej funkcjonalności Excela: dynamicznych tablic. Powiem tak: to jest REWOLUCJA. Od tej pory mega-skomplikowane formuły będzie można zamienić na kilka przyjemnych i łatwych w użyciu funkcji. Również to, co do tej pory było wręcz niemożliwe do wykonania – przy pomocy dynamicznych funkcji tablicowych będzie bardzo proste!

Nie trzeba daleko szukać – niedawno pokazywałam sposób na stworzenie przeszukiwalnej listy rozwijanej, wykorzystujący formularz użytkownika i makra oczywiście (VBA). Artykuł ten możesz przeczytać tutaj. Opisane w nim rozwiązanie bardzo mi się podoba – sama stosuję je w swoich plikach, jak również w plikach, które tworzę dla klientów.

Wiem jednak, że nie wszyscy chcą korzystać z makr. W takiej sytuacji potrzebne jest rozwiązanie oparte np. na formułach. I takie właśnie dzisiaj pokażę. Efekt będzie taki:

MalinowyExcel Przeszukiwalna lista rozwijana 365 Wynik

Pokażę Wam rozwiązanie wzorowane na propozycji Leili Gharani, której kanał na YT bardzo Wam polecam.

Zaczynamy!

Czytaj dalej

Lista rozwijana z uprawnieniami cz. 2 (VBA)

Czyli jeśli góra zatwierdziła – nie można edytować!

W poprzednim wpisie pokazywałam jak zahasłować wybrane zakresy komórek w arkuszu tak, aby mogły je edytować jedynie osoby, które znają hasło. Dzisiaj pokażę kod VBA, który nie pozwoli edytować komórek, jeśli konkretna komórka została już uzupełniona.

W naszej sytuacji akceptowania warunków zamówień będzie to działać tak, że jeśli Kierownik Kontroli Kredytowej (KKK) zaakceptuje umowę (zaakceptuje = Tak), osoby wcześniej akceptujące (Dział Obsługi Klienta (DOK) i Dyrektor Sprzedaży (DS)) nie będą mogli już zmieniać swoich decyzji. Czyli, krótko mówiąc, zamówienie zostanie finalnie zaakceptowane.

Ma to działać tak:

MalinowyExcel Listy rozwijane z uprawnieniami cd VBA Wynik

Zabierzmy się więc za stworzenie takiego rozwiązania.

Czytaj dalej

Przeszukiwalna lista wyboru z podpowiedziami (formularz VBA)

Czyli sposób na łatwe szukanie klienta z VBA

Temat, o który już dawno mnie pytaliście, ale przyznaję szczerze: nie chciało mi się za niego zabierać :). W końcu jednak nadszedł czas! Obecnie, z nowym mechanizmem przeliczania w Excelu 365, zrobienie czegoś takiego za pomocą formuł nie jest już wielkim wyzwaniem. Natomiast wyzwaniem jest to, że nadal nie wszyscy mają Excela w tej wersji. I szybko to się nie zmieni… Dlatego chciałabym, aby rozwiązanie było możliwe w każdej wersji Excela.

Ok, ale o co w ogóle chodzi?

O przeszukiwalną listę. Chciałabym napisać rozwijaną, ale to za bardzo ograniczyłoby mi możliwości rozwiązania, choć na pewno byłoby najbardziej użyteczne.

Chodzi o zrobienie takiej listy wyboru np. klientów, aby po wpisaniu kilku liter (niekoniecznie początkowych), Excel wylistował klientów, zawierających wpisane litery. Z nich użytkownik wybiera klienta, który ma być wpisany do komórki.

Chodzi o coś takiego:

VBA Przeszukiwalna lista klientów

 

Czyli po dwukrotnym kliknięciu w kolumnie z klientami pojawia się formularz, na którym możemy wpisać szukaną frazę. Nasz wybór zostanie wpisany do aktywnej komórki arkusza.

Zadanie do najłatwiejszych nie należy, rozwiązanie będzie złożone i długie (dlatego tak długo zwlekałam ;)). Ale damy radę! Do dzieła!

Czytaj dalej

Zapisz PDF z taką samą nazwą co plik Excela (VBA)

Czyli wystarczy mała podmianka w kodzie

Prawie dwa lata temu napisałam artykuł, gdzie pokazywałam jak z pliku Excela wygenerować plik PDF i zapisać go pod taką nazwą, jak wartość wybranej komórki w arkuszu. Wszystko to za pomocą przycisku. Napisałam w tym celu makro, które szczegółowo omówiłam w tym artykule.

Niedawno zapytaliście mnie jednak, jak zrobić, aby wygenerowany plik nazywał się dokładnie tak samo, jak plik Excela, z którego powstał. Brzmi strasznie, ale w rzeczywistości jest prościutkie. Wymaga bowiem jednej małej modyfikacji w kodzie i ją właśnie opiszę w tym artykule.

Formatka wygląda identycznie, jak w poprzednim artykule:

Formatka

Formatka

Do dzieła!

Czytaj dalej

Graficzne przyciski uruchamiające makra

Czyli prosty sposób na skuteczną komunikację z użytkownikiem

Makra możemy wywoływać na wiele sposobów. Z części z tych sposobów korzystamy na etapie tworzenia kodu, niektóre dzieją się same (zdarzenia), a inne – mają być wygodne dla użytkownika. Do tych z pewnością należą skróty klawiszowe i… przyciski. Zazwyczaj korzystamy z formantów formularza (pisałam o tym tutaj). Metody super, bo działają.

Jeśli jednak chcesz pójść o krok dalej (a zakładam, że skoro czytasz ten artykuł, to chcesz ;)), warto zamiast zwykłego przycisku z napisem (np.: Drukuj), użyć przycisku graficznego. Jest to o tyle fajna metoda, że użytkownik nie musi się wczytywać w tekst na przycisku (a takie wczytywanie jest to szczególnie uciążliwe, gdzie przycisków jest kilka!), tylko rzuca okiem na grafikę i od razu wie co robi dany przycisk.

Przykład:

 

Najlepsze jest to, że takie graficzny przycisk zrobimy od początku do końca sami, bez jakichś specjalnych umiejętności – cały czas będziemy korzystać z wbudowanych możliwości Excela. Nie musimy angażować grafika komputerowego :).

Czytaj dalej

Nazwy arkuszy na liście rozwijanej, generowanej automatycznie

Czyli zdarzenie arkusza tworzące listę arkuszy

Zadanie na dziś to stworzenie listy rozwijanej, zawierającej nazwy arkuszy w pliku. Powiedzmy, że oddziały naszego sklepu są w różnych miastach, każde miasto ma swój arkusz. My chcemy do głównego arkusza pobrać sumę sprzedaży z wybranego miasta. Interesujące nas miasto (arkusz) chcemy wybrać z listy rozwijanej, i na podstawie naszego wyboru ma się obliczyć suma sprzedaży z tego miast. O tak:

Jak już będziemy mieli nazwę arkusza to dalej pikuś – kiedyś już to opisywałam. Natomiast samo uzupełnienie listy – tutaj bez VBA się nie obejdzie – będą pętle, liczniki i inne bajerki, więc do dzieła!

Czytaj dalej

Treść nagłówka lub stopki na wydruku pobierana z komórki

Czyli dynamiczny nagłówek lub stopka

Dziś zadanie będzie proste – chcemy, aby tekst z komórki pojawił się w nagłówku lub w stopce na wydruku, np. niech to będzie nazwa klienta, dla którego drukujemy ofertę czy jakąś informację. Nie chce nam się zmieniać wartości bezpośrednio w nagłówku/stopce, tylko niech pobiera się ona z komórki (a ta przecież może być uzupełniana przez formułę, niekoniecznie przez nas). O tak:

Formatka

Użyjemy do tego zdarzenia skoroszytu, którego jeszcze na blogu nie pokazywałam…

Czytaj dalej

Korespondencja seryjna generująca oddzielne PDF-y

Czyli tworzenie wielu PDF-ów z jednej formatki

Podobny temat kiedyś już poruszałam na blogu, natomiast chodziło o stworzenie oddzielnych arkuszy dla pracowników, których informujemy o podwyżce. Tym razem też będziemy informować pracowników o podwyżce, natomiast dla każdego wygenerujemy oddzielny PDF z tą informacją. O tak:

Tylko troszkę zmodyfikujemy kod, który pokazywałam tutaj. Jedziemy!

Czytaj dalej

Dopisz dane do tabeli w chronionym arkuszu

Czyli auto-rozszerzanie tabeli…

Niby prosta rzecz: mamy chroniony arkusz, w nim obiekt tabela. Chcemy ją oczywiście uzupełniać i oczekujemy, że, jak to ma w zwyczaju tabela, powiększy się ona o dopisane poniżej niej dane.

A tu ZONK! Dane może i się dopisują (zakładając, że te komórki są odblokowane), ale tabela nie powiększa się w chronionym arkuszu!!!

Tak niestety się dzieje…

W tym artykule pospieszę na ratunek (koślawy co prawda – wolałabym, żeby tabele po prosu DZIAŁAŁY w chronionym arkuszu!). Pokażę makro, które spowoduje, że gdy user dopisze nowe dane bezpośrednio pod tabelą – powiększy się ona o ten dopisany rekord.

Dodatkowo, dzięki sprytnemu wykorzystaniu stylów sprawię też, że kopiowane formuły z kolumn obliczeniowych będą chronione, natomiast użytkownik nadal będzie mógł korzystać z list rozwijanych i wpisywać dane w odpowiednie kolumny tabeli.

Efekt będzie następujący:

Jedziemy!

Czytaj dalej