如何使用VBA获取Excel电子表格中组合框的索引?

时间:2010-07-13 02:15:56

标签: excel-vba vba excel

我有一个Excel 2003文件。在第一张表中,我放了一个组合框。之后,我分配一个宏来处理更改事件。宏位于VB Editor的Project Explorer框中的一个模块。在宏中,我想写一些行来获取组合框的选定项索引的索引。我该怎么写?

我写了一行

If ActiveSheet.cbFilter.Index = 1 Then

但它一直在引发错误(组合框的名称是“cbFilter”)。错误消息是“对象不支持方法的此属性”。请帮帮我。

非常感谢,

哈里斯

3 个答案:

答案 0 :(得分:1)

尝试删除“ActiveSheet”。声明的一部分,我的猜测是组合已经在该表中。

来源:经验

此致

答案 1 :(得分:0)

您是否已将项目添加到组合列表中?

在调试器中尝试这些代码:首先调用Preload()一次,然后从组合中选择任何内容,然后运行Readout()....这应该给你一个提示。

Sub Preload()
   ActiveSheet.ComboBox1.AddItem "111"
   ActiveSheet.ComboBox1.AddItem "222"
   ActiveSheet.ComboBox1.AddItem "333"
End Sub

Sub ReadOut()
    ActiveSheet.[A1] = ActiveSheet.ComboBox1.ListIndex
    ActiveSheet.[A2] = ActiveSheet.ComboBox1
End Sub

你也应该检查你是否创建了对MSForms 2.0对象库的引用(FM20.DLL - 或类似的)

编辑:

我刚刚测试了空Combo的情况...索引将为-1

答案 2 :(得分:0)

试试这个。如果您查看对象浏览器cbFilter对象是sheet1的属性,可以从模块中引用如下。

MsgBox Sheet1.cbFilter.ListIndex


 If Sheet1.cbFilter.ListIndex = 1 Then

enter image description here