2010-11-18 16 views
10

Osadzony w arkuszu sheet1 Mam pole kombi Formularz sterowania o nazwie combobox_test i wybrała wartość xExcel VBA: Uzyskiwanie wartości z Formularza Kontroluje

oprócz tego, ja też mam embbeded przycisk, który po Naciśnij i chcę, aby wartość miała wartość combobox_test i umieść ją w something.Rows(y). Ale nie mogę go uruchomić i jestem trochę sfrustrowany. Może możesz wskazać mi w dobrym kierunku?

Sub ButtonPressed_sample() 
    Dim value As String 

    Set putItRng = Range("theCells")   
    putItRng.Rows(1) = ActiveSheet.Shapes("combobox_test").Value   
End Sub 

Dowolna rada? Jestem absolutnie początkujący w VBA, więc proszę, bądź jak najbardziej szczegółowy. Dzięki

+0

błąd co otrzymasz? – Panicos

+0

Błąd czasu wykonywania "438". Obiekt nie obsługuje tej właściwości lub metody ... i pokazuje wiersz 'putItRng.Rows (1) = ActiveSheet.Shapes (" combobox_test "). Wartość' – Carlos

Odpowiedz

6

nie jestem pewien, że to, co chcesz, ale to dopiero początek. Obiekt Shape nie ma właściwości Value, która jest źródłem błędu. Istnieje obiekt DropDown, który jest przestarzały, ale wciąż dostępny.

Sub ButtonPressed_sample() 

    Set putitrng = Range("theCells") 
    putitrng.Rows(1) = ActiveSheet.DropDowns("combobox_test").value 

End Sub 
+3

Uwaga: DropDown (i ComboBox, przyciski itp.) Są nieaktualne, ponieważ jeśli zdecydujesz się zgrupować kilka kształtów razem, elementy sterujące, które są w grupach, nie pojawią się w tych obiektach kolekcji. Zgaduję, że ten komentarz to tylko uwaga, aby nie poddawać kontroli pod żadne zgrupowane kształty, pod warunkiem, że używasz tej metody (której ja również używam) :) – Alain

1
putItRng.Rows(1)= ActiveSheet.combobox_test.value 

Spróbuj:

activesheet.cells(1,putItRng.column).value=activesheet.combobox_test.value 

Jeśli robi to działa wówczas combobox nie jest nazwany „Combobox_test”

+0

nadal podaje ten sam błąd, chociaż – Carlos

+0

Musisz odwołać się przez ActiveWorkbook Arkusz kalkulacyjny ("ponieważ wiele skoroszytów ma jeden arkusz Activesheet). Wiersze (1) dają cały zakres wszystkich kolumn w rzędzie 1 ... Przejdź krok po kroku. Spróbuj znaleźć prawdziwe źródło problemu, używając dwóch Msgbox, po lewej stronie, a po prawej stronie powyższego sugerowanego zadania. To lepiej wskaże, o co chodzi. Zgaduję, że twoje nazewnictwo obiektów jest błędne. – jpinto3912

8
Sub QuickSelect_Change() 
     With ActiveSheet.Shapes("QuickBox") 
      MsgBox "My Selected Value " & .ControlFormat.List(.ControlFormat.ListIndex) 
     End With 
    End Sub 
3
ActiveSheet.Shapes("combobox_test").ControlFormat.ListIndex 
+0

Chociaż może to odpowiedzieć na pytanie, byłoby lepiej wyjaśnić, dlaczego jest to właściwe rozwiązanie. –

+0

Najwyżej oceniona odpowiedź odwołuje się do kolekcji DropDowns, ale Alain wspomniał, że było to przestarzałe, ponieważ "jeśli zdecydujesz się zgrupować kilka kształtów, elementy sterujące, które są w grupach, nie pojawią się w tych obiektach kolekcji". Kolekcja kształtów jest kolejnym środkiem odwoływania się do formantu combobox form, ale wpis Carlos nie działa dla mnie. – rdg515

+0

Po prostu próbowałem 'ActiveSheet.Shapes (" combobox_test "). ControlFormat.Value' i stwierdzono, że uzyskał ten sam wynik. Niektóre scenariusze mogą uznać, że jest to bardziej odpowiedni styl kodowania. –