我有一个VBA程序(在Excel 2007中),我希望使用数组设置组合框的ListFillRange属性作为列表。
我知道如果我右键单击组合框并在“ListFillRange”属性旁边写下“Sheet1!$ F2:$ F17”,这就行了。我也可以在代码中执行此操作。但是,我有兴趣通过为它分配一个数组来动态设置该属性的值。
我确定数组在我测试时工作;这里可能存在语法错误:
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
但是,我有兴趣一次填充所有值以获得更快的效果,不仅仅是按元素添加。
答案 0 :(得分:7)
我知道它很晚但也许它会帮助别人。至少以下代码适用于我(比元素元素快得多)。
dim arr() as variant
arr = Worksheets("Total").Range("C2:"&lrow).Value
Worksheets("Menu").ComboBox2.List = arr
答案 1 :(得分:0)
使用数组内容填充组合框的唯一方法是逐个元素地执行。我发现很难相信无论你的阵列有多大,它都会是一个非常缓慢的过程。