2010-11-18 14 views
10

incorporato nel foglio di lavoro sheet1 ho una casella combinata Controllo modulo chiamato combobox_test ed ha selezionato valore xExcel-VBA: Ottenere i valori da Form Controls

in aggiunta a ciò, ho anche embbeded un pulsante che, quando lo premo voglio che prenda il valore di combobox_test e lo metta in something.Rows(y). Ma non riesco a farlo funzionare e sto diventando un po 'frustrato. Forse puoi indicarmi la giusta direzione

Sub ButtonPressed_sample() 
    Dim value As String 

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

Qualche consiglio? Sono un principiante assoluto in VBA, quindi per favore sii il più dettagliato possibile. Grazie

+0

quale errore si ottiene? – Panicos

+0

Errore di run-time '438'. L'oggetto non supporta questa proprietà o metodo ... e mostra la riga 'putItRng.Rows (1) = ActiveSheet.Shapes (" combobox_test "). Valore' – Carlos

risposta

6

io non sono sicuro che questo è ciò che si vuole, ma è un inizio. L'oggetto Shape non ha una proprietà Value, che è la fonte dell'errore. Esiste un oggetto DropDown deprecato, ma ancora disponibile.

Sub ButtonPressed_sample() 

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

End Sub 
+3

Nota, DropDowns (e ComboBoxes, Buttons, ecc.) Sono deprecati perché se si sceglie di raggruppare più forme insieme, i controlli presenti nei gruppi non vengono visualizzati in tali oggetti di raccolta. Quindi immagino che questo commento sia solo un avvertimento per non mettere il tuo controllo in nessuna forma raggruppata finché usi questo metodo (che anch'io uso anch'io) :) – Alain

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

Prova:

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

Se non funziona allora la vostra casella combinata non è denominato "Combobox_test"

+0

continua a dare lo stesso errore anche se – Carlos

+0

È necessario fare riferimento a ActiveWorkbook .Activeheet (perché più cartelle di lavoro hanno ciascuna un Activesheet). Rows (1) ti offre l'intero intervallo di tutte le colonne nella riga 1 ... Vai su questo passo. Prova a trovare la vera fonte del problema usando due Msgbox, uno per il lato sinistro, l'altro per il lato destro del compito suggerito sopra. Ciò consentirà di individuare meglio qual è il problema. Immagino che la denominazione dell'oggetto sia sbagliata. – 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

Mentre questo può rispondere alla domanda, sarebbe meglio per spiegare perché è la soluzione giusta. –

+0

La risposta più votata fa riferimento alla collezione DropDowns, ma Alain ha affermato che questo è stato ritirato perché "se si sceglie di raggruppare più forme insieme, i controlli presenti nei gruppi non vengono visualizzati in questi oggetti di raccolta". La collezione di forme è un altro mezzo per fare riferimento a un controllo di form di una casella combinata, ma il post di Carlos non ha funzionato per me. – rdg515

+0

Ho appena provato 'ActiveSheet.Shapes (" combobox_test "). ControlFormat.Value' e ho scoperto che otteneva lo stesso risultato. Alcuni scenari potrebbero trovare questo uno stile di codifica più appropriato. –

Problemi correlati