Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Excel, Vba i Combobox w Userform'ie

25 Mar 2010 20:33 10290 7
  • Poziom 9  
    Witam
    Dziś postanowiłem pobawić się Combobox'em. Może ktoś pomoże jak mógłbym to zrobić i czy jest to do zrobienia. Chce w Userform'ie zrobic Combobox'a z listą - to osiągąłem przez:

    Code:
    Private Sub UserForm_Initialize()
    
    Worksheets("Arkusz1").Activate
    ComboBox1.RowSource = "B5:B170"
    End Sub

    Listę mam a chciałbym aby po wybraniu daną nazwę z listy w tym samym userformie pokazuwały się wszystkie dane o tym co wybrałem - jest to możliwe do zrobienia w excelu?
    Robiąc jeszcze taki manewr:

    Code:
    Private Sub ComboBox1_Change()
    
    Worksheets("Arkusz2").Activate
    ActiveCell.Value = ComboBox1.Value
    ActiveCell.Offset(1, 0).Activate
    End Sub

    Wawalę dany wybór do drugiego arkusza - może tutaj jakąś formułe zastosować? - tak głośno kombinuję, użyć później UserForm1.TextBox1.Text=Rande().Value
    Czy tak przekombinuję?
    Prośba o pomoc początkującemu :)
  • Moderator Programowanie
    Witeq napisał:
    Czy tak przekombinuję?
    Na to wygląda...

    Wykorzystaj właściwość ListIndex Combobox'a. Pierwsza pozycja pola kombi ma indeks 0. Przyjmując założenie, że wartość pola tekstowego pobierana będzie z zakresu C5:Cxxx to
    Code:
    Private Sub ComboBox1_Change()
    
    wrs = ComboBox1.ListIndex + 5
    TextBox1.Text = Sheets("Arkusz1").Cells(wrs, 3)
    End Sub
  • Poziom 9  
    [quote="adamas_nt"]
    Witeq napisał:
    Czy tak przekombinuję?


    poradziłem sobie z tematem połowicznie - działam dalej zrobiłem to tak:
    utworzyłem nowy arkusz i użyłem formyły:

    JEŻELI(CZY.BŁĄD(ADR.POŚR("Arkusz1!B"&PODAJ.POZYCJĘ(MIN.K( Arkusz1!$A$2:$A$20;WIERSZ()-2); Arkusz1!$A$1:$A$20;0)));"";ADR.POŚR("Arkusz1!B" & PODAJ.POZYCJĘ(MIN.K( Arkusz1!$A$2:$A$20;WIERSZ()-2); Arkusz1!$A$1:$A$20;0)))

    a w wcześniejszym dorzuciłem kolumnę:

    JEŻELI(B3=Arkusz2!A$1;MAX(A$1:A2)+1;"")

    Teraz adamas_nt do ciebie pytanie - czy muszę zawsze dorzucać w/w kolumnę z formułą z przodu listy? tzn jako wcześniejszą? i jak posortować dane w comboboxie - alfabetycznie? teraz to chyba zamotałem - ale prognozy są obiecujące
  • Pomocny post
    Moderator Programowanie
    Listy dla pola kombi nie sortuj poza arkuszem, nie pozbierasz się z indeksami.
    Nie rozumiem natomiast dlaczego uparłeś się biegać przez ogródek, jeśli do furtki dwa kroki...
  • Poziom 9  
    adamas_nt napisał:
    Listy dla pola kombi nie sortuj poza arkuszem, nie pozbierasz się z indeksami.
    Nie rozumiem natomiast dlaczego uparłeś się biegać przez ogródek, jeśli do furtki dwa kroki...


    Rzeczywiście walę dookoła - heh zacznę najpierw czytać a później działać.
    A co do sortowania - przydałoby sie.
    Jeszcze sprawa taka: jeśli coś jest zdublowane - nie chcę w combobosie mieć zdublowanych nazw. łatwiej w userformie wypunkować coś pod daną nazwą parę razy niż oddzielnie pokazywać.
  • Moderator Programowanie
    Witeq napisał:
    łatwiej w userformie wypunkować coś pod daną nazwą parę razy niż oddzielnie pokazywać.
    Tu nie byłbym taki pewien.
    Zrób coś z dublami (nie wiem jakiego typu masz dane), może zakres listy pobieraj z dwóch kolumn
    Excel, Vba i Combobox w Userform'ie

    posortuj i dopiero podstaw jako listę combobox'a
  • Poziom 9  
    Witam ponownie mistrzu

    chyba utknąłem i proszę o pokazanie właściwej drogi - muszę zrobić sortowanie w combox-ie - do zrobienia, wrzucić te same dane ( tzn komórki z tymi samymi nazwami które są posortowane combox-em) do listbox-a i tak jak zaznaczę daną nazwę wrzuci mi wszystkie pozostałe dane tej konkretnej nazwy w textbox-ie. hmm chyba się poddaję, vba dla mnie jest za potężne - nie wiem czy kiedyś obczaję tak jak Wy. Wrzucenie arkusza aby pokazać co chcę obrobić i ułatwić sobie życie jest niemożliwe - szkoda. Postaram się wrzucić coś podobnego - może będzie łatwiej zrozumieć co chcę zrobić.
  • Moderator Programowanie
    Czekamy w takim razie na plik. Jednak uparcie sugeruję przygotowanie danych w arkuszu przed otwarciem formularza.
    Można to zautomatyzować Np przy inicjacji formularza...