用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
。 有几种方法来完成你想要的。
-
将ComboBox的
LinkedCell
属性设置为所需的位置(即使在隐藏的工作表上)。- 您可以从该单元格读取combobox的值,甚至可以手动input文本
Worksheets("Sheet1").Shapes("ComboBox1").LinkedCell = "C1"
- 你可以设置单元格的值,它会反映在combobox中
boxValue = Range("C1")
Range("C1") = "custom entry"
- 您可以从该单元格读取combobox的值,甚至可以手动input文本
-
直接访问ActiveX控件对象 。
- 我强调“对象”,因为控件是工作表对象的子对象。 所以你可以这样做:
msgbox Worksheets("Sheet1").ComboBox1.Value
它直接得到你的价值。 请记住使用在控件的Name
属性中设置的控件的Name
。 - 设置值的工作方式相同:
Worksheets("Sheet1").ComboBox1.Value = strExample
- 我强调“对象”,因为控件是工作表对象的子对象。 所以你可以这样做:
无论哪种方式都可以访问控制数据。