我有一个VBA过程(在Excel 2007中),我期望使用数组将列表组合框的ListFillRange属性设置为列表。使用数组元素填充VBA中的组合框
我知道这个作品,如果我右键单击组合框,并写入“Sheet1!$ F2:$ F17”旁边的“ListFillRange”属性。我也可以在代码中做到这一点。但是,我感兴趣的是通过为其分配一个数组来动态设置该属性的值。
我知道肯定数组的作品,我测试它;有可能是一个语法错误的位置:
ThisWorkbook.Worksheets("Sheet1").OLEObjects("cmbS").ListFillRange = ar
我这样做时,我得到: “类型不匹配”的错误。
此操作的结果应该是组件使用数组元素(从元素(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。 – 2016-01-26 14:20:17