获取VBA中的下拉值并获取下拉列表的名称......无处可寻?

时间:2010-09-29 22:28:35

标签: excel vba excel-vba excel-2003

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

我的下拉列表仅包含文字。

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

4 个答案:

答案 0 :(得分:7)

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是下拉列表的位置 填充。所以无论你的列表数据在哪里 是

    希望对大家有所帮助。

答案 1 :(得分:3)

以下是如何获取String而无需知道名称:

Dim DD As Shape

Set DD = ActiveSheet.Shapes(Application.Caller)

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

答案 2 :(得分:0)

这是一种笨重的方式,但它应该有效:

Dim o As Object

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

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

答案 3 :(得分:0)

Lance Roberts几乎就在那里。如果您不知道调用sub的下拉列表的名称,请使用:

Dim dd as DropDown
Set dd=ActiveSheet.Shapes(Application.Caller).OLEFOrmat.Object

Dim ddVal as String
ddVal=dd.List(dd.ListIndex)

我用它来为一个有很多下拉的表单创建一个通用子。