2010-09-29 33 views
6

Creé un menú desplegable arrastrando el cuadro combinado a mi hoja desde la barra de herramientas de UserForm. Le asigné algunos valores desde algunas celdas del libro. Ahora quiero que algunos códigos VBA accedan al valor del elemento desplegable seleccionado en forma de cadena.Obtener valor desplegable en VBA y obtener el nombre del menú desplegable ... ¿no se puede encontrar en ninguna parte?

Mi menú desplegable contiene solo texto.

Además, ¿cómo puedo encontrar el nombre de este menú desplegable recientemente creado (no aparece en ninguna parte de las propiedades)?

Respuesta

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

Set ddValue = r(dd.Value) 

NOTAS:

  • DropDown no es una clase visible. Usted simplemente úselo y funciona.

  • para encontrar el nombre de la lista desplegable DE CONTROL (no formUsuario) tan sólo mirar a
    el cuadro de nombre en la esquina superior izquierda de la pantalla justo encima de la columna A. Se dice que el nombre del control cuando haga clic derecho en su control.-

  • La hoja 2 es donde la lista desplegable es poblada. Entonces, donde sea su lista de datos es.

    Espero que les ayude a todos.

0

Ésta es una manera torpe de hacerlo pero debería funcionar:

Dim o As Object 

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

También hay un miembro de DropDowns colección oculta del objeto Worksheet que se puede recorrer en iteración. Esto encontrará artículos insertados desde la barra de herramientas Forms pero no encontrará elementos insertados desde el Control Toolbox barra de herramientas

3

continuación se explica cómo obtener la cadena sin necesidad de conocer el nombre:

Dim DD As Shape 

Set DD = ActiveSheet.Shapes(Application.Caller) 

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

Me sale un error de tipo en la segunda línea. De nuevo, no sé cómo funciona, pero estoy usando el control desplegable, no el formulario de usuario, tal vez eso cambia la forma en que normalmente accedemos a la cadena. – EKet

+0

Probé el mío haciendo clic en el control ComboBox en la barra de herramientas Formularios, y luego haciendo clic en la hoja para agregarlo. Luego creé el subíndice DropDown1_Change en la Hoja 1 con este código. Luego volví al Combobox, hice clic con el botón derecho y elegí Asignar Macro y elegí la Macro relevante que acababa de crear. Luego hice clic derecho y elegí Format Control, y elegí el rango de entrada de A1: A3. Luego coloco algunos valores en A1, A2 y A3. Luego, cuando hice clic en el ComboBox y elegí uno de esos valores, apareció un cuadro de mensaje con el valor. –

+0

Lance, gracias por el detalle paso a paso. Intenté tus instrucciones nuevamente y todavía recibí el mismo error. Sin embargo, publiqué la respuesta de trabajo de antemano que es intuitiva y más clara. Ese método me permite ver lo que estoy llamando e identificar los tipos de objetos que estoy usando (es decir, DropDown). Entonces, como programador, no solo estoy viendo objetos de formas genéricas y llamadas de aplicación. Me gusta su método para un escenario más genérico en lugar de un menú desplegable específico o 2 menús desplegables que filtran algunos datos. Sin embargo, ¡gracias por tu esfuerzo! – EKet

Cuestiones relacionadas