• Zapisz się na newsletter, aby otrzymywać powiadomienia o najnowszysch wpisach.

Lista rozwijana wielokrotnego wyboru – edycja wpisu

Czyli sterowanie zdarzeniem

To będzie chyba najkrótszy post na tym blogu. Niby trudna rzecz, a wymaga 2 linijek kodu VBA i ustawienia jednej opcji w Excelu. O co chodzi?

W tym wpisie pokazywałam jak zrobić listę wielokrotnego wyboru za pomocą narzędzia sprawdzania poprawności. Wszystko pięknie działało, natomiast problem pojawiał się wtedy, kiedy chcieliśmy dokonać zmiany we wcześniej wpisanych wartościach, np. skasować jakąś wartość. Efekt był taki, że ponieważ skorzystaliśmy z mechanizmu sprawdzania poprawności, to Excel nie pozwalał nam wprowadzać do komórki innych wartości, niż pojedynczy wpis na liście rozwijanej. A taką było większość wpisów, które wybraliśmy.

Dlatego dzisiaj pokażę rozwiązanie tego problemu. Najprostsze z możliwych, czyli takie, jak lubię :). Efekt będzie taki:

Do dzieła!

Czytaj dalej

Lista rozwijana wielokrotnego wyboru (odsłona 2)

Czyli wybieranie z listy ROZWIJANEJ więcej niż jednej pozycji

W poprzednim wpisie pokazywałam sposób na stworzenie listy wielokrotnego wyboru. Lista ta była formantem formularza, czyli “pływającym” w arkuszu obiektem, który mogliśmy umieścić w wybranym przez siebie miejscu. Rozwiązanie to było świetne, gdy mieliśmy mało komórek, do których chcieliśmy wpisać wartość z tej listy. Gorzej jest jednak, gdy mamy wiele komórek, w której, o zgrozo!, każda ma inną listę i z każdej z nich chcemy wybierać po kilka wartości do komórki. Masakra!

Sytuacje takie jednak jak najbardziej się zdarzają, więc dziś o tym, jak sobie wtedy radzić. Znów będzie o VBA i to nie takim oczywistym niestety. I znów będą zdarzenia :). Znów, ponieważ już ostatnio o nich pisałam, np. przy otwieraniu pliku na konkretnym arkuszu czy kasowaniu wpisu na zależnej liście rozwijanej.

Teraz więc formatka będzie znacznie łatwiejsza:

Formatka

Formatka

Czytaj dalej

Lista wielokrotnego wyboru (odsłona 1)

Czyli wybieranie z listy więcej niż jednej pozycji

Wiele razy korzystałam z list w formie formantów formularza, aby pobrać z nich wartość i wpisać do komórki. Nigdy jednak nie potrzebowałam wybrać z takiej listy kilku wartości i wpisać ich do komórki. Z taką potrzebą zgłosił się do mnie Wojtek. Temat mega mnie zaciekawił i pomyślałam, że Was też może.

Czyli sytuacja jest taka, że z listy rozwijanej chcemy wybrać kilka wartości i chcemy wpisać je do komórki tak, żeby każda pozycja listy była w nowym wierszu tej samej komórki. Nie jest to może zgodne ze “sztuką”, natomiast życie jest życiem i tak czasem chcemy albo jesteśmy zmuszeni. BTW: i tak cała trudność będzie w pobraniu wartości z listy, a samo wpisanie ich to już pikuś ;).

Całość będzie miała taki efekt:

 

Oczywiście bez VBA się tutaj nie obędzie, więc bez zbędnego przedłużania… do dzieła!

Czytaj dalej

Kasowanie wartości zależnej listy rozwijanej na długiej liście (VBA)

Czyli automatyczne kasowanie wartości po raz drugi

Ostatnio, w tym wpisie, pokazałam jak sprawić, żeby wpis na zależnej liście rozwijane sam się kasował, gdy tylko zostanie zmieniona wartość kategorii, czyli komórki, od której nasza lista rozwijana zależy. Wszystko fajnie, natomiast rozwiązanie to uwzględniało, że mamy tylko dwie komórki: z kategorią i podkategorią. Problem zaczyna się pojawiać, gdy tych komórek mamy więcej – całą listę. Taką sytuację pokazuje poniższy rysunek:

Formatka

Formatka

Czyli chodzi o to, że jak zmienię wartość listy rozwijanej w kolumnie B – ma się wykasować wartość Podkategorii (kolumna C) z odpowiedniego wiersza. Znamy kolumnę komórki, która ma zostać wykasowana (C), ale nie znamy wiersza, gdyż zależy on od tego, którą komórkę wybierze użytkownik. Na tym właśnie polega cała trudność tego zadania.

Do jego rozwiązania znów posłużę się VBA, oczywiście zdarzeniem, ale tym razem będzie ono bardziej skomplikowane. Użyję do tego konstrukcji warunkowej IF (odpowiednik arkuszowej funkcji JEŻELI), właściwości Cells zakresu i jeszcze kilku innych trików 🙂

Czytaj dalej

Zależna lista rozwijana – automatyczne usuwanie podkategorii po zmianie kategorii (VBA)

Czyli zależne listy rozwijane – kolejna odsłona

To już któryś z kolei wpis o zależnych listach rozwijanych. Dziś jednak będzie trochę inaczej, ponieważ samych list nie będę tykać, tylko pokażę jak skasować wpis na zależnej liście rozwijanej, po zmianie wyboru z pierwszej listy (tej, od której jest zależna).

Formatka jest prosta: potrzebujemy dwóch list rozwijanych (żółte pola): pole kategorii i pole podkategorii:

Formatka

Formatka

Po wyborze kategorii, do pola podkategorii wczytuje się odpowiednia lista rozwijana, w zależności od wyboru kategorii (o tym, jak to zrobić pisałam np. tutaj). Problem jednak polega na tym, że jak wybierzemy jakąś kategorię i podkategorię, a potem zmienimy kategorię – wybrana wcześniej podkategoria zostanie i, oczywiście, nie będzie pasowała do nowej kategorii. Można ją oczywiście wykasować, ale mi chodzi o to, aby trochę użytkownika wyręczyć i zrobić, aby Excel sam kasował wartość podkategorii, gdy zmieni się kategoria. Natomiast to już jest pole do popisu dla VBA i o tym będzie dzisiejszy wpis.

Czytaj dalej

Zależna lista rozwijana z nieposortowanych danych – zdarzenie VBA

Czyli co zrobić, aby wpisy na liście zmieniały się dynamicznie, kiedy dopisujemy dane

Przyznam, że sporo namęczyłam się, aby znaleźć rozwiązanie tego problemu. Jak już jakieś wymyśliłam, obalałam je, bo nie do końca by działało… Wymyśliłam nawet funkcję tablicową napisaną w VBA, która idealnie zwracałaby tablicę z wynikami, problem jednak polegał na tym, że lista rozwijana potrzebuje ZAKRESU, a moja wyimaginowana funkcja dawała jej tablicę. Gdyby ta tablica znajdowała się w jakimś zakresie, to ok – wszystko pięknie by działało. Ale to byłoby bez sensu: musiałabym mieć tych zakresów wiele i to nie wiadomo jakich rozmiarów… Z kolei nie mogłam napisać funkcji zwracającej zakres, ponieważ zakresu de facto nigdzie nie mam… i tak w koło Macieju.

W końcu wymyśliłam rozwiązanie, które po prostu tworzy listę rozwijaną w momencie kliknięcia w komórkę, w której lista powinna się znajdować. To natomiast jest już procedura zdarzenia VBA, więc jest ciut bardziej skomplikowane. Na szczęście żeby działało, nie trzeba tego rozumieć – wystarczy przekopiować kod 😉

Czytaj dalej

Zależna lista rozwijana w komórce

Już od jakiegoś czasu chodziło mi po głowie, aby napisać o tym triku artykuł. Dodatkowo zmotywował mnie Waldkorg, bo dziś właśnie o niego zapytał. Trik, który bardzo sobie chwalą użytkownicy formularzy. Trik, który ułatwia i przyspiesza im pracę. Trik, dzięki któremu twoje formatki będą im przyjazne.

Kiedyś wykorzystałam go, gdy tworzyłam formularz, za pomocą którego handlowcy zamawiali towar. Spośród całego asortymentu mieli oni wybrać te produkty, które zamierzali sprzedać. Każdy handlowiec najpierw określał grupę produktową, a następnie konkretny produkt z tej grupy. Na formularzu miała się znaleźć cała nazwa grupy oraz konkretny indeks produktu. Ponieważ wpisywanie tego z palca byłoby zbyt czasochłonne (i denerwujące), zaproponowałam bardzo sprytne i proste rozwiązanie – 2 listy rozwijane. Pierwsza była listą wszystkich kategorii produktów, druga zaś listą wszystkich produktów znajdujących się w wybranej kategorii. Stworzyłam więc listę rozwijaną zależną od wyboru dokonanego na poprzedniej liście (tutaj znajdziesz wpis o tym, jak stworzyć dwie zależne listy rozwijane).

Taki sam efekt chce uzyskać Waldkorg, który do budżetu domowego potrzebuje kategorii i podkategorii wydatków. Przykładowe dane znajdują się na poniższym obrazku:

Lista kategorii i podkategorii

Lista kategorii i podkategorii

Czyli np. jeśli wybierzemy kategorię Rozrywka, to na liście podkategorii powinny się znaleźć: Kino, Teatr, Basen. Bardzo sprytne rozwiązanie, jeśli w swoim budżecie domowym chcecie analizować więcej szczegółów. Przyznam, że w mojej propozycji budżetu domowego ograniczam się tylko do kategorii, dlatego że taki podział wydatków w zupełności mi wystarcza (nazwę wydatku/przychodu traktuję jak podkategorię). Jeśli jednak potrzebujecie podzielić to na podkategorie, to metoda, którą opiszę dalej będzie idealna. Korzystajcie śmiało!

Czytaj dalej

Jak umieścić na wstążce kartę “Deweloper”?

Jest to jedno z pierwszych zagadnień, od którego zaczynam omawianie makr na szkoleniach.

No dobrze. Ale co to tak właściwie jest ta karta Deweloper i po co komu ona?

Jest to karta (czyli menu z opcjami) zawierająca opcje przydatne każdemu, kto tworzy makra w Excelu. Korzystają z niej zarówno ci, którzy nagrywają makra (dla nich jest ona niezbędna!), jak i ci, którzy te makra piszą samodzielnie (choć tym z pewnością mniej).

Karta wygląda tak:

Karta Deweloper

Karta Deweloper

Jest ona standardowo ukryta i – aby z niej korzystać – trzeba ją odkryć.

Czytaj dalej

Lista rozwijana w prostym formularzu

W tym artykule pokażę jak stworzyć listę rozwijaną w komórce w prostym formularzu. Efekt będzie następujący:

Lista rozwijana w komórce

Dodatkowo, gdy użytkownik zaznaczy komórkę, by uzupełnić dane – pojawi się komunikat z informacją, jakie dane ma uzupełnić (komunikat wejściowy). Gdy zaś wpisze błędną wartość – pojawi się komunikat o błędzie (alert o błędzie) i użytkownik zostanie poproszony o wpisanie/wybranie poprawnej wartości.
Czytaj dalej