У меня есть диапазон в рабочей книге, который я бы хотел установить в список элементов в Combobox из одного из моих Userforms. Проблема в том, что диапазон может быть любого размера. В настоящее время я обрабатываю нулевой регистр, выйдя из Sub
, но когда в диапазоне есть только один элемент.VBA Excel Добавление диапазона с динамическим размером в список Combobox
Когда есть один элемент, вместо того, чтобы возвратить массив элементов, он возвращает только один String
элемент и ListBox дает мне ошибку: `Ошибка выполнения«381»: Не удалось установить свойство List. Недопустимый индекс массива свойств. Есть ли способ справиться с этим, кроме создания исключения для случая, когда есть только один элемент?
Введите код: Редактировать: Исправлена ошибка, заключающаяся в том, чтобы точно представлять проблему.
Private Sub UserForm_Activate()
Dim formList As Variant
Dim lastRow As Long
lastRow = getLastRowInCol(Sheets("HiddenVariables"), "B")
If lastRow = 0 Or lastRow = 1 Then Exit Sub
formList = Sheets("HiddenVariables").Range("B2:B" & lastRow).value 'If lastRow =2 then run-time error 381 is thrown
Me.ComboBox.list = formList
End Sub
Операторы сравнения один ' = 'в VBA, а не двойной' == '. False также считается нулевым, поэтому 'If Not CBool (lastRow) Then Exit Sub' также подходит. – Jeeped
Справа, исправлено это. Спасибо – RWA4ARC
Вы можете попробовать вставить 'If Not IsArray (formList) Then formList = Array (formList)' перед 'Me.ComboBox.list = formList'. – Jeeped