2010-09-29 12 views
6

Utworzono menu rozwijane, przeciągając pole kombi na mój arkusz z paska narzędzi UserForm. Przypisałem mu pewne wartości z niektórych komórek w książce. Teraz chcę trochę kodu VBA, aby uzyskać dostęp do wartości wybranego elementu rozwijanego w postaci ciągu.Uzyskaj wartość rozwijaną w VBA i uzyskaj nazwę listy rozwijanej ... nigdzie nie można znaleźć?

Moje menu zawiera tylko tekst.

Również, jak znaleźć nazwę tego nowo utworzonego rozwijanego (nigdzie nie we właściwościach!)?

Odpowiedz

4
Dim dd As DropDown 
Set dd = ActiveSheet.DropDowns("Drop Down 6") 
Set r = Sheet2.Range(dd.ListFillRange) 

Set ddValue = r(dd.Value) 

Uwagi:

  • DropDown nie jest klasą widoczną. Po prostu używaj go i to działa.

  • Aby znaleźć nazwę rozwijanej KONTROLI (UserForm) nie wystarczy spojrzeć na
    polu Nazwa w lewym górnym rogu ekranu, tuż nad kolumnie A. Mówi nazwę kontroli podczas kliknij prawym przyciskiem myszy na formancie.

  • Arkusz 2 jest tam, gdzie jest lista rozwijana . Tak więc wszędzie tam, gdzie masz listę danych .

    Nadzieję, że pomaga wam wszystkim.

0

To jest przylegający sposób to zrobić, ale to powinno działać:

Dim o As Object 

For Each o In Worksheets("Sheet1").Shapes 
    MsgBox o.Name 
Next o 

Jest też ukryty członek DropDowns zbiór obiektu Worksheet że można iteracyjnego. Pozwoli to znaleźć elementy wstawione z paska Forms ale nie znajdzie elementy wstawione z paska

3

Tutaj Control Toolbox ten sposób można uzyskać ciąg bez konieczności znać nazwę:

Dim DD As Shape 

Set DD = ActiveSheet.Shapes(Application.Caller) 

MsgBox DD.ControlFormat.List(DD.ControlFormat.ListIndex) 
+0

Dostaję niedopasowanie typu na 2 linii. Znowu nie wiem, jak to działa, ale używam formantu rozwijania, a nie formularza użytkownika, co może zmienić sposób uzyskiwania dostępu do łańcucha. – EKet

+0

Testowałem moje, klikając kontrolkę ComboBox na pasku narzędzi Formularze, a następnie klikając arkusz, aby go dodać. Następnie utworzyłem podkatalog DropDown1_Change na arkuszu 1 z tym kodem. Następnie wróciłem do Combobox, kliknąłem prawym przyciskiem i wybrałem Przypisz makro i wybrałem odpowiednie Makro, które właśnie utworzyłem. Następnie kliknąłem prawym przyciskiem myszy i wybrałem Format Control, i wybrałem zakres wejściowy A1: A3. Następnie umieszczam pewne wartości w A1, A2 i A3. Następnie, gdy kliknąłem na ComboBox i wybrałem jedną z tych wartości, pojawiło się okno komunikatu z wartością. –

+0

Lance, dzięki za szczegółowe krok po kroku. Próbowałem twoich instrukcji Znowu i wciąż otrzymałem ten sam błąd. Opubli- kowałem już wcześniej roboczą odpowiedź, która jest intuicyjna i przejrzysta. Ta metoda pozwala mi zobaczyć, do czego dzwonię i identyfikować typy obiektów, z których korzystam (np. DropDown). Jako programista nie widzę tylko ogólnych obiektów kształtu i Application Caller. Podoba mi się twoja metoda bardziej ogólnego scenariusza niż konkretne rozwijane lub 2 drop-downy, które filtrują niektóre dane. Niemniej jednak dziękuję za wysiłek! – EKet