2014-12-20 4 views
1

У меня есть UDF, который возвращает вектор строки. Я хотел бы использовать результаты упомянутого UDF в другой функции. Таким образом, я хотел бы использовать переменную для хранения результатов массива, которые будут использоваться в качестве входных данных во второй функции. Когда я хочу вспомнить элемент переменной, я получаю сообщение об ошибке «Требуемый объект».Сохранение массива в переменной vba

u = test() 
x = u.Item(4) 

Что недостает в моем коде? Благодаря

+0

Пожалуйста, покажите, как 'u' и' x' объявлены, и что 'тест()' на самом деле возвращает, то, как это возвращаемый массив объявлен внутри функции. –

+0

'Item' используется для коллекций, которые не совпадают с массивами. – ja72

ответ

1

Вы должны ссылаться на индекс массива без Item собственности (это не существует для массивов), так как:

u = test() 
x = u(4) 
+0

Теперь я сталкиваюсь с «Подкатегорией вне диапазона». Однако я попытался переставить функцию test(), и он работает. Есть предположения? – CWK

+0

'Элемент' существует в VBA для коллекций, но не для массивов. –

+0

@ Jean-FrançoisCorbett Спасибо, обновились, чтобы отразить ваш комментарий. – Gareth

-1

Как отмечают другие посты - вы бы не использовать свойство .item для массива в VBA. Таким образом, вы бы просто сделать:

u = test() 
x = u(4) 

Что касается вашего вопроса о том, почему вам нужно перенести эту функцию, но вот некоторые рекомендации:

VBA не действительно обрабатывать одномерные массивы супер хорошо. Таким образом, в зависимости от того, что вы пытаетесь сделать с ним, вам часто приходится переносить массив в одну «строку». Я считаю, что это в основном эквивалент изменения.

x = u(n) в x = u(1,n)

+0

Я внесла поправки в свой ответ, чтобы задать как исходный вопрос, так и следующий вопрос о том, почему нужно переносить массив. – KingOfTheNerds

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