Excel-VBA:从表单控件中获取值

时间:2010-11-18 21:29:05

标签: vba user-controls excel-vba excel

嵌入工作表sheet1我有一个名为combobox_test的表单控件组合框,它选择了值x

除此之外,我还嵌入了一个按钮,当我按下它时,我希望它取combobox_test的值并将其放在something.Rows(y)中。但我不能让它工作,我有点沮丧。也许你可以指出我正确的方向

Sub ButtonPressed_sample()
    Dim value As String

    Set putItRng = Range("theCells")        
    putItRng.Rows(1) = ActiveSheet.Shapes("combobox_test").Value        
End Sub

有什么建议吗?我是VBA的绝对新手,所以请尽可能详细。感谢

6 个答案:

答案 0 :(得分:9)

   Sub QuickSelect_Change()
        With ActiveSheet.Shapes("QuickBox")
            MsgBox "My Selected Value " & .ControlFormat.List(.ControlFormat.ListIndex)
        End With
    End Sub

答案 1 :(得分:7)

我不确定这是你想要的,但这是一个开始。 Shape对象没有Value属性,这是错误的来源。 Dropdown对象已被弃用,但仍然可用。

Sub ButtonPressed_sample()

    Set putitrng = Range("theCells")
    putitrng.Rows(1) = ActiveSheet.DropDowns("combobox_test").value

End Sub

答案 2 :(得分:3)

ActiveSheet.Shapes("combobox_test").ControlFormat.ListIndex

答案 3 :(得分:1)

putItRng.Rows(1)= ActiveSheet.combobox_test.value

尝试:

activesheet.cells(1,putItRng.column).value=activesheet.combobox_test.value

如果它不起作用,那么你的组合框不会命名为“Combobox Test”

答案 4 :(得分:0)

如前所述,Shape ComboBox没有Value属性。

我使用Shape对象的DrawingObject属性来获取CheckBox FormControl对象。然后,可以像使用任何其他FormControl一样使用此CheckBox对象。

您还应该能够使用DrawinObject从Shape对象获取ComboBox objcet。

如果要获取选定的文本,则可以尝试插入以下代码:

Dim sh as Shape
Dim cB as ComboBox
For Each sh In ws.Shapes
    If sh.Type = msoFormControl Then
        If TypeOf sh.DrawingObject Is ComboBox Then
            Set cB = sh.DrawingObject
            ... 
            your code for getting the Data from ComboBox
            ...
        End If
    End If
Next

答案 5 :(得分:0)

感谢与这个主题进行斗争,但是这个话题给了我一个答案。我不知道method1或method2引用类型的区别,可以使用.value|.List属性读取值。拥有一个完全类型化的obj变量会很棒。

Dim obj As Object
Set obj = ws.DropDowns("combo1")  ' method 1
Set obj = ws.Shapes("combo1").ControlFormat  ' method 2
Debug.Print obj.value & "|" & obj.List(obj.value)  ' 1...n|Text1,Text2,..n