【问题标题】:Get dropdown value in VBA and get the name of the dropdown...nowhere to be found?在 VBA 中获取下拉列表值并获取下拉列表的名称...无处可寻?
【发布时间】:2010-09-29 22:28:35
【问题描述】:

我通过将组合框从用户窗体工具栏拖到我的工作表上来创建一个下拉列表。我从书中的一些单元格中为其分配了一些值。现在我想要一些 VBA 代码以字符串的形式访问所选下拉项的值。

我的下拉菜单只包含文本。

另外我如何找到这个新创建的下拉列表的名称(它不在属性中!)?

【问题讨论】:

    标签: vba excel excel-2003


    【解决方案1】:
    Dim dd As DropDown
    Set dd = ActiveSheet.DropDowns("Drop Down 6") 
    Set r = Sheet2.Range(dd.ListFillRange)
    
    Set ddValue = r(dd.Value)
    

    注意事项:

    • DropDown 不是可见类。你 只需使用它,它就可以工作。

    • 查找下拉列表的名称 CONTROL(不是用户表单)看看
      屏幕左上角的名称框,位于 A 列上方。 它说控件的名称时 你右键点击你的控件。-

    • Sheet2 是下拉列表所在的位置 人口稠密。所以无论你的列表数据 是。

      希望对大家有所帮助。

    【讨论】:

      【解决方案2】:

      以下是无需知道名称即可获取字符串的方法:

      Dim DD As Shape
      
      Set DD = ActiveSheet.Shapes(Application.Caller)
      
      MsgBox DD.ControlFormat.List(DD.ControlFormat.ListIndex)
      

      【讨论】:

      • 第二行出现类型不匹配。同样,我不知道它是如何工作的,但我使用的是下拉控件而不是用户表单,这可能会改变我们通常访问字符串的方式。
      • 我通过单击表单工具栏上的 ComboBox 控件来测试我的,然后单击工作表以添加它。然后,我在 Sheet 1 上创建了 DropDown1_Change 子,其中包含此代码。然后我回到组合框,右键单击并选择分配宏,然后选择我刚刚创建的相关宏。然后我右键单击并选择格式控制,并选择 A1:A3 的输入范围。然后我在 A1、A2 和 A3 中输入了一些值。然后,当我单击 ComboBox 并选择其中一个值时,会出现一个带有该值的消息框。
      • Lance,感谢您一步一步的详细说明。我再次尝试了您的指示,但仍然收到相同的错误。但是,我确实事先已经发布了直观且更清晰的工作答案。该方法允许我查看我正在调用的内容并识别我正在使用的对象类型(即 DropDown)。所以作为一名程序员,我不只是看到通用形状对象和应用程序调用者。我喜欢您的方法用于更通用的场景,而不是过滤某些数据的特定下拉菜单或 2 个下拉菜单。不过感谢您的努力!
      【解决方案3】:

      这是一种笨拙的方法,但它应该可以工作:

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

      还有一个隐藏的 DropDowns 集合成员 Worksheet 对象,您可以对其进行迭代。这将找到从Forms 工具栏插入的项目,但不会找到从Control Toolbox 工具栏插入的项目

      【讨论】:

        【解决方案4】:

        兰斯·罗伯茨就快到了。如果您不知道调用 sub 的下拉菜单的名称,请使用:

        Dim dd as DropDown
        Set dd=ActiveSheet.Shapes(Application.Caller).OLEFOrmat.Object
        
        Dim ddVal as String
        ddVal=dd.List(dd.ListIndex)
        

        我用它为带有许多下拉菜单的表单创建了一个通用子。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-05-20
          • 2023-03-27
          • 2014-06-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-08
          相关资源
          最近更新 更多