Vba 从下拉框中返回所选文本

Vba 从下拉框中返回所选文本,vba,excel,Vba,Excel,我试图从Excel表单上选择的下拉框返回文本。我尝试了很多方法,最接近的方法就是返回索引号。还看了一下: 链接: 我在那页上还没有找到有效的解决方案。我尝试过以下方法: ActiveSheet.DropDowns("DropDown1").Value ActiveSheet.DropDowns("DropDown1").Text ActiveSheet.DropDowns("DropDown1").SelectedValue ActiveSheet.Shapes("DropDown1").Val

我试图从Excel表单上选择的下拉框返回文本。我尝试了很多方法,最接近的方法就是返回索引号。还看了一下:

链接:

我在那页上还没有找到有效的解决方案。我尝试过以下方法:

ActiveSheet.DropDowns("DropDown1").Value
ActiveSheet.DropDowns("DropDown1").Text
ActiveSheet.DropDowns("DropDown1").SelectedValue
ActiveSheet.Shapes("DropDown1").Value

等等。

这将从下拉列表中返回当前选择

Sub TestDropdown()
    Dim ws As Worksheet
    Dim dd As DropDown

    Set ws = ActiveSheet
    Set dd = ws.Shapes("DropDown1").OLEFormat.Object

    MsgBox dd.List(dd.ListIndex)
End Sub

顺便说一句,指定一个声明为
Dim dd as DropDown
的变量将为您提供
dd
上的智能感知。如果宏由下拉框本身调用,您还可以获取调用方名称。这样,您就不必担心重命名下拉框:)


如果您无法
Dim as下拉列表
,我发现此更改将起作用

Sub TestDropdown()
    Dim ws As Worksheet
    Dim dd As Object

    Set ws = ActiveSheet
    Set dd = ws.DropDowns("DropDown1")

    MsgBox dd.List(dd.ListIndex)
End Sub

您可以声明“…在excel表单上选择的下拉框”,但链接和示例代码引用的是工作表上的形状。你想做什么?另外,您使用的是哪个版本的Excel?我使用的是Excel 2010。嗯,在我的一部分代码中,我将下拉列表称为ActiveSheet.Shapes,这部分代码运行良好。通过下拉菜单访问也可以。我不确定您使用的是什么:您是否在工作表中添加了控件(例如,从“开发人员”选项卡,插入表单或ActiveX控件,如果是,插入哪个控件),或者您是否在单元格或区域中添加了数据验证(例如,从“数据”选项卡,数据验证,如果是,具体设置是什么)是的,我通过“开发者”选项卡下的表单控件添加了它。哇,它工作起来很有魅力。我从来没有想到过,我以为它会像.SelectedIndex这样简单。谢谢克里斯。这是真正的答案,因为获取对象名称是一个PITA。
Sub TestDropdown()
    Dim ws As Worksheet
    Dim dd As Object

    Set ws = ActiveSheet
    Set dd = ws.DropDowns("DropDown1")

    MsgBox dd.List(dd.ListIndex)
End Sub