使用VBA设置组合框的值

时间:2016-01-12 15:29:08

标签: excel vba excel-vba combobox shapes

我有一个组合框,其中包含来自命名区域的200多个值,用户可以选择 选择中的任何一个自由输入任何值其他值进入组合框。这很好。

我的问题是我无法用我的VBA代码中的字符串变量中指定的值填充相同的组合框。我想做以下事情:

Sub FillInComboBox()
Dim strExample as String

strExample = "Random Text"

Worksheets("Sheet1").Shapes("ComboBox1").Value = strExample 

End Sub

我得到“运行时错误”438:对象不支持此属性或方法“。 我也尝试了上面代码的很多变化,我用Google搜索了两个小时没有成功,所以我现在转向你,这是我最后的希望让这个工作。

3 个答案:

答案 0 :(得分:2)

使用以下子。

    Sub FillInComboBox()
    Dim strExample As String
        strExample = "Random Text"

        With Sheet1.ComboBox1
            .AddItem strExample
            .AddItem "Second Item"
            .AddItem "Third Item"
        End With
    End Sub

答案 1 :(得分:0)

我自己解决了这个问题:

Worksheets("Sheet1").OLEObjects("ComboBox1").Object.Value = strExample

答案 2 :(得分:0)

看起来您正在使用ActiveX ComboBox。有几种方法可以达到你想要的效果。

  1. 将ComboBox的LinkedCell属性设置为所需的属性 位置(即使在隐藏的工作表上)。

    • 您可以从该单元格中读取组合框的值,甚至可以手动输入文本
      Worksheets("Sheet1").Shapes("ComboBox1").LinkedCell = "C1"
    • 您可以设置单元格的值,它将反映在组合框中 boxValue = Range("C1")
      Range("C1") = "custom entry"
  2. 直接访问ActiveX控件 对象

    • 我强调“对象”,因为控件是工作表对象的子对象。所以你可以这样做:
      msgbox Worksheets("Sheet1").ComboBox1.Value
      它可以直接获得价值。请记住使用您在控件的Name属性中设置的控件的名称。
    • 设置值的工作方式相同:
      Worksheets("Sheet1").ComboBox1.Value = strExample
  3. 无论哪种方式都可以访问控制数据。