Czyli co zrobić, aby źródło listy rozwijanej samo się powiększało?
Temat, który pojawił się na webinarze o listach rozwijanych i powtarza się w wielu mailach, które do mnie piszecie. Listy rozwijane już umiemy tworzyć (opisuję to choćby tutaj). Ten temat powtarzał się na blogu wieeele razy. Jednak do tej pory opisywałam listy, które mają statyczne źródło. Dziś odpowiem na pytanie o to, co zrobić, żeby źródło listy rozwijanej się powiększało?
Omówię to na prościutkim przykładzie: mamy listę rozwijaną, z której chcemy wybrać dział, w którym pracuje dany pracownik. Natomiast chcemy mieć możliwość dopisywania działów i nasza lista ma te nowe działy uwzględnić.
Tak wygląda formatka:
Trik jest bardzo prosty, tylko jak zwykle trzeba o nim wiedzieć :). Chodzi o to, aby źródło listy rozwijanej było obiektem tabela. Potem samo idzie 😉
Zobaczmy to dokładniej.
Krok 1. Tworzenie obiektu tabela
Chcemy, aby źródło listy rozwijanej było tabelą (nawet jeśli jednokolumnową). Aby stworzyć z danych tabelę, należy ustawić się w tych danych (u nas to zakres D3:D10) i użyć skrótu klawiszowego Ctrl + t. Po zatwierdzeniu okienka tworzenia tabeli dostaniemy taki obrazek:
Oczywiście kolorki tego cuda można sobie pozmieniać.
Jedną z właściwości obiektu tabela jest to, że zwiększa swój zakres po dopisaniu do niej danych. Tę właściowość wykorzystamy w liście rozwijanej (krok 2.).
Krok 2. Tworzenie listy rozwijanej
Aby ją stworzyć najpierw należy:
1. Zaznaczyć komórki, w których ma ta lista się pojawić. U nas jest to żółta komórka B4.
2. Następnie wybrać z menu Dane/ Sprawdzanie Poprawności.
3. Pojawi się okienko sprawdzania poprawności, z którego wybieramy, że dozwoloną wartością ma być lista.
4. W polu Źródło wskazujemy natomiast naszą tabelę, którą stworzyliśmy w poprzednim kroku, a konkretnie te wpisy, które mają się pojawić na liście, czyli D4:D10. KOmplet informacji pokazuje poniższy obrazek:
Powstanie nam oczywiście lista rozwijana w komórce, natomiast będzie miała ona interesującą nas właściwość – jej źródło będzie dynamiczne, czyli jak dopiszemy nowy dział do spisu działów – pojawi się on na liście rozwijanej w żółtej komórce. Prezentuje to obrazek poniżej:
Tak stworzona lista rozwijana rzeczywiście będzie miało samopowiększające się źródło, natomiast warto wiedzieć, że to zadziała, jak tabela źródłowa jest w tym samym arkuszu ups!). Jest oczywiście sposób, aby działało między arkuszami i możesz o nim przeczytać tutaj.
I tyle! Proste? I hope ;). Komu pomogłam to dajcie proszę znać w komentarzu 🙂
Poniżej wersja wideo tego triku:
MalinowyExcel Dynamiczne źródło listy rozwijanej dw.xlsx
jedyny minus to, że lista musi być w tym samym arkuszu
Tak, to niestety jest minus… ;( Dopiszę do artykułu, żeby nie było wątpliwości 😉
I obiecany artykuł tutaj:
Nie musi.
W jednym arkuszu tworzymy tabelę o przykładowej nazwie „tblTesty”
a potem w poprawności danych w innym arkuszu
=adr.pośr(„tblTesty”)
a jak zrobić aby nazwy z listy rozwijanej podpowiadały sie podczas wpisywania kolejnych znaków nazwy…?
Tego niestety nie zrobimy zwykłym sprawdzaniem poprawności ze „starym” mechanizmem Excela. Jest to możliwe (choć też nie w idealny sposób) za pomocą nowego „calculating engine” w Excelu (dostępny w Excelu 365, insider edition) i Leila Gharani pokazuje go tutaj: https://youtu.be/Z-h2UER3b_0
Jeśli nie ta opcja, to zostaje już tylko VBA i to wcale nie takie proste… Tutaj jest coś, co może pomóc: https://www.contextures.com/xlDataVal10.html
Witam serdecznie,
Chciałbym nadmienić, że robi Pani świetną robotę.
Czy mogłaby Pani zrobić kurs na temat filtrowania danych w tabeli z pomocą list rozwijanych.
Mam tabelę z danymi i chciałbym, aby wybierając z listy rozwijanej jakąś daną z zawartą w danej kolumnie tabla pokazywała tylko wiersz z danej tabeli.
Przykładowo wybieram z listy Lp. 1 tabela wyświetla mi wiersze w których w kolumnie Lp. zawiera się 1.
Pozdrawiam
Witam,
bardzo dziękuję za słowa uznania :). Zawsze mi miło, jak słyszę takie 🙂
Odnośnie pytania – tutaj trzeba byłoby użyć już zdarzeń w VBA po to, aby takie filtrowanie działo się automatycznie.
Natomiast wydaje mi się, że może w takiej sytuacji wystarczy po prostu autofiltr? Pytanie dokładnie jaka jest sytuacja? 🙂
Witam
Szukam sposobu automatycznego zwiększenia wysokości wiersza listy rozwijanej w przypadku wybrania dłuższego tekstu.
Pozdrawiam
Darek
Hej, można napisać zdarzenie w VBA, które na zmianę wartości danej komórki automatycznie powiększałoby wysokość wiersza. To jedyne, co przychodzi mi do głowy…