使用数组元素在VBA中填充组合框

时间:2013-03-14 16:17:16

标签: excel-vba excel-2007 vba excel

我有一个VBA程序(在Excel 2007中),我希望使用数组设置组合框的ListFillRange属性作为列表。

我知道如果我右键单击组合框并在“ListFillRange”属性旁边写下“Sheet1!$ F2:$ F17”,这就行了。我也可以在代码中执行此操作。但是,我有兴趣通过为它分配一个数组来动态设置该属性的值。

我确定数组在我测试时工作;这里可能存在语法错误:

ThisWorkbook.Worksheets("Sheet1").OLEObjects("cmbS").ListFillRange = ar

当我这样做时,我得到: “类型不匹配”错误。

此操作的结果应该是使用数组元素填充组件,从元素(0)...到数组的最后一个元素(n-1)。任何指针,非常感谢!

我也尝试过:

ThisWorkbook.Worksheets("Sheet1").cmbS.list = ar

它说“许可被拒绝”

如果它有帮助,以下是组合框属性: enter image description here

经过测试和尝试,我发现这有效:

ThisWorkbook.Worksheets("Sheet1").cmbS.ListFillRange = ""

Dim i As Integer
For i = LBound(ar) To UBound(ar)
    ThisWorkbook.Worksheets("Sheet1").cmbS.AddItem (ar(i))

Next

但是,我有兴趣一次填充所有值以获得更快的效果,不仅仅是按元素添加

2 个答案:

答案 0 :(得分:7)

我知道它很晚但也许它会帮助别人。至少以下代码适用于我(比元素元素快得多)。

dim arr() as variant

arr = Worksheets("Total").Range("C2:"&lrow).Value
Worksheets("Menu").ComboBox2.List = arr

答案 1 :(得分:0)

使用数组内容填充组合框的唯一方法是逐个元素地执行。我发现很难相信无论你的阵列有多大,它都会是一个非常缓慢的过程。