用VBA设置combobox的值

我有一个combobox,其中包含来自命名范围的200多个值,用户可以select这些200以上的值中的任何一个, 或者在combobox中自由input任何其他值。 这工作正常。

我的问题是,我无法用我的VBA代码中的stringvariables中指定的值填充相同的combobox。 我想要做到以下几点:

Sub FillInComboBox() Dim strExample as String strExample = "Random Text" Worksheets("Sheet1").Shapes("ComboBox1").Value = strExample End Sub 

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

使用下面的子。

  Sub FillInComboBox() Dim strExample As String strExample = "Random Text" With Sheet1.ComboBox1 .AddItem strExample .AddItem "Second Item" .AddItem "Third Item" End With End Sub 

我自己解决了

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

看起来像你正在使用一个ActiveX ComboBox 。 有几种方法来完成你想要的。

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

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

    • 我强调“对象”,因为控件是工作表对象的子对象。 所以你可以这样做:
      msgbox Worksheets("Sheet1").ComboBox1.Value
      它直接得到你的价值。 请记住使用在控件的Name属性中设置的控件的Name
    • 设置值的工作方式相同:
      Worksheets("Sheet1").ComboBox1.Value = strExample

无论哪种方式都可以访问控制数据。