Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

VBA Excel 2010 Listbox czy funkcja

Hemikalny 25 Sep 2015 16:18 1176 16
  • #1
    Hemikalny
    Level 9  
    Cześć wszystkim! Chciał bym zapytać w jaki sposób rozwiązać zagwuzdkę jaką mam z exce'em. Chcę aby w wybranej komórce można było posortować i wybrać element z dodatkowej lisy w innym arkuszu. Czyli mam jakąś tam listę składającą się z kilkunastu komórek w jednej kolumnie. I chciałbym móc wybrać którąś z tych komórek w innym arkuszu w innej komórce wpisując powiedzmy trzy pierwsze litery słowa. Czy można to zrobić na funkcjach czy trzeba przy użyciu listbox'a. No i w jaki sposób to zrobić. Z góry dzięki.
  • #2
    Maciej Gonet
    VBA, Excel specialist
    Dzień dobry,
    Można i tak, i tak.
    W załączonym pliku przykład listy rozwijanej z podpowiedzią na bazie formuł i poprawności danych. Komórka robocza jest w Arkuszu1 komórka I4. Dane są w Arkuszu2 w kolumnie A od A1. Kolumna pomocnicza w Arkuszu2 w Kolumnie D od D1. Są ponadto dwie nazwy zdefiniowane w Menedżerze nazw (lista i nazwa).
    Działa to tak:
    W komórce I4 wpisujemy początek poszukiwanej nazwy (jedną lub więcej liter). Następnie rozwijamy listę (klikając trójkąt z prawej strony komórki) i wybieramy co nam odpowiada. Lista wyboru zawiera tylko te elementy pierwotnej listy, które zaczynają się od wpisanych liter.

    P.S. W arkuszu zostawiłem jeszcze inny rodzaj listy - może się przyda przy innej okazji.
  • #3
    Hemikalny
    Level 9  
    Dzięki wielkie. Jeszcze jak byś dał skąd można wziąść stabilną wersję office 2010 to bym był wdzięczny bo już szukam z dwie godziny. A na tym kompie go nie mam :\.
  • #4
    Maciej Gonet
    VBA, Excel specialist
    To rozwiązanie zadziała również w Excelu 2007, a w przypadku wcześniejszych wersji trzeba poprawić formuły z JEŻELI.BŁĄD. A co do źródeł Excela, to ja korzystam tylko z legalnych.
  • #5
    Hemikalny
    Level 9  
    Ok a jakich funkcji używałeś, i jak zmienić ustawienia żeby w kolumnie I w każdej komórce można było wybierać z listy rozwijanej ?
  • #6
    Maciej Gonet
    VBA, Excel specialist
    W przykładzie adres komórki z listą był zapisany na stałe, teraz zmieniłem tak, że można kopiować komórkę z listą rozwijaną. Wszystkie formuły widać w arkuszu. Tak jak pisałem dwie nazwy zdefiniowane: lista i nazwa są w Menedżerze nazw. Inne nazwy w Menedżerze należą do tej drugiej liisty.
  • #7
    Hemikalny
    Level 9  
    ok mam coś takiego i jak teraz podpiąć wyszukiwanie po pierwszych literach w arkuszu1 kolumna A z Arkusza2 kolumna A ???
  • #8
    Maciej Gonet
    VBA, Excel specialist
    Dlaczego przesyłasz pdf-a, a nie plik Excela (ja zresztą tego pdf-a nie umiem otworzyć, pisze że uszkodzony)?
    Słownik u mnie Arkusz2 kol. A. "nazwa" zdefiniowana w Menedżerze nazw definicja:
    Code: text
    Log in, to see the code

    Lista pomocnicza "lista" w Menedżerze nazw - definicja:
    Code: text
    Log in, to see the code

    Lista ta umieszczona jest w Arkuszu2 w kolumnie D od D1. W zakresie tej listy formuły tablicowe (jednokomórkowe):
    Code: text
    Log in, to see the code

    Po wpisaniu jednej formuły do D1 i zatwierdzeniu Ctrl+Shift+Enter, kopiujemy w dół do tylu komórek ile jest danych w kolumnie A.
    Listę rozwijaną ustawiamy w dowolnym arkuszu. Jako dane do listy podajemy formułę
    Code: text
    Log in, to see the code

    W zakładce "Alert o błędzie" wyłączyć alerty.
    Komórkę z listą można kopiować.
    Czy to wystarczy?
  • #9
    Hemikalny
    Level 9  
    No tak ale nie wiem czy cię dobrze zrozumiałem ale trzeba definiować każdą komórkę z osobna a chodzi o to żeby dana formuła tyczyła się całej kolumny i całej listy która może być w dowolny sposób modyfikowana w późniejszym terminie czyli dodawanie i usuwanie argumentów. Zmień rozszerzenie na xls bo mnie forum nie chciało puścić. No chyba że tak jest a ja nie rozumiem :)

    Już wiem mój office 2010 zapisuje jako *xlsx a twój jako *xls a forum tego mojego nie puszcza zmieniłem na xls. teraz powinno być dobrze.
  • #10
    Maciej Gonet
    VBA, Excel specialist
    Teraz z kolei ja nie rozumiem. W Twoim pliku jest tylko słownik i nic więcej. Więc nie wiem o co chodzi. Dałem Ci przykład działającej listy, opisałem wszystko, co trzeba zrobić, żeby taka lista działała. Czy o taką listę chodziło, czy o inną? Do słownika można dopisywać kolejne pozycje, byle po kolei (bez zostawiania pustych komórek). Słownik powinien zaczynać się w pierwszym wierszu, albo trzeba zmienić formułę "nazwa".
  • #11
    Hemikalny
    Level 9  
    Jak wejdziesz na arkusz1 i wybierzesz jakąś komórkę z kolumny A to pokaże ci się rozwijana lista. I chodzi o to aby wpisać pierwsze litery w tej komórce a lista sama się przefiltruje i pokaże ci wyniki pasujące do kryterium. Ważne jest żeby ta zasada tyczyła się całej kolumny tak aby można ją było w dowolny sposób modyfikować.
  • #12
    Maciej Gonet
    VBA, Excel specialist
    Jeśli używasz Excela 2010, to musisz plik .xlsx lub .xlsm skompresować do pliku .zip lub .rar, bo to forum nie przyjmuje plików .xlsx ani .xlsm. Z kolei jak się zapisze taki plik w formacie .xls, to część funkcjonalności jest obcinana i nie można takiego pliku poprawnie odczytać. W Excelu 2007 nie ma tego problemu, bo plik zapisany jako .xls, wczytany potem do 2007 lub 2010 nie traci funkcjonalności.
  • #14
    Maciej Gonet
    VBA, Excel specialist
    Niestety ja mam tu Excela 2007 i nie widzę tych list rozwijanych. Jutro w pracy sprawdzę, bo tam mam Excela 2010. Chociaż jestem zdziwiony, bo dotąd nie zauważyłem takiego problemu. Plik Excela 2010 po dekompresji powinien być odczytany w Excelu 2007 poprawnie (przynajmniej jeśli chodzi o listy rozwijane).
    Sprawdź na wszelki wypadek, czy jak ściągniesz ten swój plik z forum, czy Ci się poprawnie dekompresuje? Bo objętość tego pliku jest też podejrzanie mała.
  • #15
    Hemikalny
    Level 9  
    u mnie po ściągnięciu działa poprawnie. Ale zaczynam mieć wrażenie że nie damy rady tego zrobić bez odpowiednio zaprogramowanego comboboxa
  • #16
    Maciej Gonet
    VBA, Excel specialist
    W tym wczorajszym pliku skompresowanym były faktycznie listy rozwijane, ale zdefiniowane nie tak jak napisałem, tylko w sposób nieakceptowany przez wcześniejsze wersje Excela, dlatego ja ich nie widziałem. W ogóle nic tam nie było zrobione zgodnie z moim opisem. Teraz wstawiłem tę listę, tylko trzeba uważać, w którym wierszu zaczyna się słownik ("nazwa"). Teraz zaczyna się w drugim wierszu, jak w Twojej wersji. W moim przykładzie zaczynał się w pierwszym wierszu. Te zmiany wymagają drobnej modyfikacji formuł.
    Pozdrowienia
  • #17
    Hemikalny
    Level 9  
    Już zrobione na comboboxie. Większa przejrzystość, funkcjonalność, intuicyjna praca. Wrzucę pliczek jutro do pobrania. A jak ktoś bardzo chce to zapraszam na priv.