我有一個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