2010-09-29 16 views
6

Ho creato un menu a discesa trascinando la casella combinata sul mio foglio dalla barra degli strumenti UserForm. Ho assegnato alcuni valori ad esso da alcune celle del libro. Ora voglio che alcuni codici VBA accedano al valore del menu a discesa selezionato sotto forma di stringa.Ottieni il valore del dropdown in VBA e ottieni il nome del menu a discesa ... in nessun posto?

Il mio menu a discesa contiene solo testo.

Inoltre, come trovare il nome di questo menu a discesa appena creato (non è in nessun punto nelle proprietà!)?

risposta

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

Set ddValue = r(dd.Value) 

NOTE:

  • DropDown non è una classe visibile. Si basta usarlo e funziona.

  • per trovare il nome del menu a discesa CONTROLLO (non form) basta guardare
    casella Nome nell'angolo in alto a sinistra dello schermo appena sopra la colonna R. Si dice che il nome del controllo, quando fai clic con il pulsante destro del mouse sul tuo controllo.-

  • Foglio2 è il punto in cui è disponibile l'elenco a discesa . Quindi ovunque siano i tuoi dati di lista .

    Speranza che ti aiuti tutti.

0

Questo è un modo goffo di farlo ma dovrebbe funzionare:

Dim o As Object 

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

C'è anche un membro DropDowns collezione nascosta dell'oggetto Worksheet che si potrebbe iterare. Ciò trovare gli oggetti inseriti dalla barra degli strumenti Forms ma non troverà elementi inseriti dal Control Toolbox barra degli strumenti

3

Ecco come ottenere la stringa senza la necessità di conoscere il nome:

Dim DD As Shape 

Set DD = ActiveSheet.Shapes(Application.Caller) 

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

Si verifica una mancata corrispondenza di tipo sulla seconda riga. Ancora non so come funziona, ma sto usando il controllo a cascata non la forma utente, forse questo cambia il modo in cui normalmente accediamo alla stringa. – EKet

+0

Ho testato il mio facendo clic sul controllo ComboBox sulla barra degli strumenti Moduli, quindi facendo clic sul foglio per aggiungerlo. Ho quindi creato il sub DropDown1_Change sul Foglio 1 con questo codice al suo interno. Poi sono tornato al Combobox, ho fatto clic con il pulsante destro del mouse e ho scelto Assegna macro e selezionato la macro che avevo appena creato. Quindi ho fatto clic con il pulsante destro del mouse e ho selezionato Format Control, e ho scelto l'intervallo di input di A1: A3. Quindi inserisco alcuni valori in A1, A2 e A3. Quindi, quando ho fatto clic sul ComboBox e ho scelto uno di questi valori, è apparso un messaggio con il valore. –

+0

Lance, grazie per il dettaglio passo dopo passo. Ho provato ancora le tue istruzioni e ho ancora ricevuto lo stesso errore. Ho comunque postato la risposta operativa già in anticipo, che è intuitiva e chiara. Questo metodo mi permette di vedere quello che sto chiamando e identificare i tipi di oggetti che sto usando (i.e DropDown). Quindi come programmatore non vedo solo oggetti di forma generici e Application Caller. Mi piace il tuo metodo per uno scenario più generico piuttosto che un dropdown specifico o due drop down che filtrano alcuni dati. Tuttavia grazie per il vostro impegno! – EKet

Problemi correlati