2015-08-17 3 views
0

Я пытаюсь написать код, который преобразует диапазон ввода в массив, а затем передает этот массив в RowSource для списка в моей форме.Ошибка свойства RowSource vba

Согласно MSDN свойство «RowSource» для списка/со списком должен принимать массивы, так что я не знаю, почему Im получаю ошибку во время выполнения здесь:

Option Explicit 

Sub test() 
Dim rng As Range 
Dim myarray As Variant 


Set rng = Worksheets("Sheet1").Range("List") 
myarray = RangeToArray(Range("List")) 
UserForm1.ListBox1.RowSource = "myarray" 


End Sub 
Function RangeToArray(inputRange As Range) As Variant 
    Dim inputArray As Variant 
    inputArray = inputRange.Value 

    'operations on inputArray 
    '...' 

    RangeToArray = inputArray 
End Function 

ответ

0

По Справка Excel VBA:

Свойство RowSource принимает диапазоны рабочих листов от Microsoft Excel.

Если у вас есть ссылка MSDN, в которой говорится иначе, отправьте ее.

В любом случае, чтобы получить результат, который вы хотите, изменить

UserForm1.ListBox1.RowSource = "myarray" 

в

UserForm1.ListBox1.List = myarray 
+0

Спасибо за ответ. Я попытаюсь это сделать и вернуться к вам. Пожалуйста, попробуйте это на VBA: Option Explicit Sub Test() UserForm1.ListBox1.RowSource = ActiveSheet.Range ("A1: A3") End Sub вы увидите, что вы получите тип несовпадения ошибки – user32882

+0

I знаете, что даст ошибку, потому что он пытается назначить свойство по умолчанию диапазона, которое представляет собой «Значение», массив. Для параметра «RowSource» должен быть установлен допустимый адрес диапазона, который может быть «A1» или именем именованного диапазона. Учитывая, что ваше сообщение указывает, что вы хотите манипулировать данными, полученными из диапазона, перед загрузкой в ​​список, использование свойства «Список» - единственный способ –

Смежные вопросы