У меня есть процедура VBA (в Excel 2007), где я стремлюсь установить свойство ListFillRange в поле со списком в виде списка с использованием массива.заполнить combobox в VBA с элементами массива
Я знаю, что это работает, если я щелкнул правой кнопкой мыши на выпадающем списке и написал «Sheet1! $ F2: $ F17» рядом со свойством «ListFillRange». Я также могу сделать это в коде. Однако мне интересно динамически устанавливать значение этого свойства, назначая ему массив.
Я точно знаю, что массив работает, когда я тестировал его; есть, вероятно, ошибка синтаксиса здесь:
ThisWorkbook.Worksheets("Sheet1").OLEObjects("cmbS").ListFillRange = ar
, когда я делаю это я получаю: ошибка «Несоответствие типов».
Результатом этого действия должно быть то, что компонент заполняется элементами массива, от элемента (0) ... до последнего элемента (n-1) массива. Любые указатели, спасибо вам большое!
Я также попытался:
ThisWorkbook.Worksheets("Sheet1").cmbS.list = ar
и он говорит "нет прав"
Вот ComboBox свойства в случае, если это помогает:
После тестирования и попытки, я нашел это работы:
ThisWorkbook.Worksheets("Sheet1").cmbS.ListFillRange = ""
Dim i As Integer
For i = LBound(ar) To UBound(ar)
ThisWorkbook.Worksheets("Sheet1").cmbS.AddItem (ar(i))
Next
Тем не менее, я заинтересован в заполнении с всех значений сразу для более быстрого эффекта, не просто добавление элемента по элементам.
Если он медленный, всегда устанавливайте обновление экрана до значения false перед использованием additem. –