【发布时间】:2013-03-03 02:49:25
【问题描述】:
我有一个 VBA 过程(在 Excel 2007 中),我希望在其中设置组合框的 ListFillRange 属性,该组合框使用数组作为列表样式。
如果我右键单击组合框并在“ListFillRange”属性旁边写下“Sheet1!$F2:$F17”,我知道这是可行的。我也可以在代码中做到这一点。但是,我有兴趣通过为其分配一个数组来动态设置此属性的值。
我确信该数组在我测试时可以正常工作;这里可能有语法错误:
ThisWorkbook.Worksheets("Sheet1").OLEObjects("cmbS").ListFillRange = ar
当我这样做时,我得到: “类型不匹配”错误。
此操作的结果应该是组件填充了数组元素,从 element(0) ... 到数组的最后一个元素 (n-1)。任何指点,非常感谢!
我也试过了:
ThisWorkbook.Worksheets("Sheet1").cmbS.list = ar
它说“权限被拒绝”
以下是组合框属性,以防万一:
经过测试和尝试,我发现这是可行的:
ThisWorkbook.Worksheets("Sheet1").cmbS.ListFillRange = ""
Dim i As Integer
For i = LBound(ar) To UBound(ar)
ThisWorkbook.Worksheets("Sheet1").cmbS.AddItem (ar(i))
Next
但是,我有兴趣一次填充所有值以获得更快的效果,不仅仅是逐个元素添加。
【问题讨论】:
-
如果速度很慢,请在使用 additem 之前将屏幕更新设置为 false。
标签: excel excel-2007 vba