2010-11-18 8 views
10

Eingebettet in das Arbeitsblatt sheet1 Ich habe eine Form Control Kombinationsfeld combobox_test genannt und es hat Wert ausgewählt xExcel-VBA: Werden die Werte aus Form Controls

zusätzlich zu dem, ich habe auch einen Knopf embbeded, dass, wenn Ich drücke es, ich möchte, dass es den Wert combobox_test annimmt und platziere es in something.Rows(y). Aber ich kann es nicht funktionieren und werde ein bisschen frustriert. Vielleicht können Sie mir in die richtige Richtung

Sub ButtonPressed_sample() 
    Dim value As String 

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

Jede beraten zeigen? Bin ein absoluter Anfänger in VBA, also bitte so detailliert wie du kannst. Dank

+0

welche Fehler bekommen Sie? – Panicos

+0

Laufzeitfehler '438'. Objekt unterstützt diese Eigenschaft oder Methode nicht ... und es zeigt die Zeile 'putItRng.Rows (1) = ActiveSheet.Shapes (" combobox_test "). Wert ' – Carlos

Antwort

6

ich nicht sicher, genannt bin das ist, was Sie wollen, aber es ist ein Anfang. Das Shape-Objekt hat keine Value-Eigenschaft, die die Quelle des Fehlers ist. Es gibt ein DropDown-Objekt, das veraltet ist, aber immer noch verfügbar ist.

Sub ButtonPressed_sample() 

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

End Sub 
+3

Hinweis: DropDowns (und ComboBoxes, Buttons usw.) sind veraltet, da die Steuerelemente, die sich in Gruppen befinden, nicht in diesen Auflistungsobjekten angezeigt werden, wenn Sie mehrere Formen gruppieren. Also ich denke, dieser Kommentar ist nur eine Warnung, Ihre Kontrolle in keine gruppierten Formen zu setzen, solange Sie diese Methode verwenden (die ich auch selbst verwende) :) – Alain

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

Versuchen:

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

Wenn es nicht funktioniert, dann Combobox nicht „Combobox_test“

+0

es gibt immer noch den gleichen Fehler obwohl – Carlos

+0

Sie müssen von ActiveWorkbook verweisen .Activesheet (weil mehrere Arbeitsmappen jeweils über ein Active Sheet verfügen). Zeilen (1) gibt Ihnen den gesamten Bereich aller Spalten in Zeile 1 ... Gehen Sie Schritt für Schritt darauf. Versuchen Sie, die tatsächliche Quelle des Problems mit zwei Msgbox zu finden, eine für die linke Seite, die andere für die rechte Seite der oben vorgeschlagenen Zuweisung. Das wird genauer bestimmen, was los ist. Ich schätze, Ihre Objektbenennung ist falsch. – 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

Während dies die Frage beantworten kann, wäre es besser zu erklären, warum es die richtige Lösung ist. –

+0

Die Antwort mit der höchsten Antwort bezieht sich auf die DropDowns-Sammlung, aber Alain erwähnte, dass dies veraltet sei, weil "Gruppen, die gruppiert sind, nicht in diesen Auflistungsobjekten angezeigt werden". Die Shapes-Sammlung ist ein weiteres Mittel, um auf ein Combobox-Formular-Steuerelement zu verweisen, aber Carlos-Post funktionierte nicht für mich. – rdg515

+0

Ich habe gerade versucht 'ActiveSheet.Shapes (" combobox_test "). ControlFormat.Value" und fand es das gleiche Ergebnis. In einigen Szenarien könnte dies ein geeigneterer Codierungsstil sein. –

Verwandte Themen