Как вернуть массив переменной длины из функции VBA

Я пытаюсь написать функцию в более крупном макросе, чтобы вернуть список элементов. Массив создается из ячеек в электронной таблице:

Function Elem_Array() As Variant Dim Elements() As Variant i = 1 Cells(i, 38).Select element1 = Cells(i, 38).Value element2 = "" Do While element2 <> element1 i = i + 1 Cells(i, 38).Select element2 = Cells(i, 38).Value ReDim Preserve Elements(1 To i) Elements(i) = element2 Loop Elements(1) = element1 Elem_Array= Elements End Function 

При попытке установить Elem_Array, равный массиву Elements, он завершает функцию без значения Elem_Array. Когда я вызываю функцию, у меня заканчиваются ошибки, потому что я пытаюсь вызвать пустой массив или строку. Я пробовал использовать цикл for для заполнения Elem_Array по одному элементу за раз, но функция заканчивается без добавления чего-либо. Является ли Elements () Dim'ed как Variant или string, ничего не меняет для меня. Предложения по подобным вопросам включают использование коллекции для Elements (), а затем использование цикла, чтобы Elem_Array равнялся элементам, но, если это возможно, я хотел бы свести к минимуму изменение кода. Любая помощь приветствуется!

Измените это:

 Dim Elements() As Variant 

К этому:

 Dim Elements As Variant 

,

Первый оператор генерирует массив вариантов

Тип возвращаемой функции – «вариантная переменная» (единственная), а не массив вариантов

  • Печать всех данных рабочего листа в текстовое поле userform
  • excel VBA (не VBScript) 101: Как мне создать и прочитать многомерный массив?
  • Многомерный массив на VBSCRIPT. для вставки в excel
  • VBA, массивы, диапазоны, сортировка
  • использовать массив, чтобы добавить и называть новые листы
  • Сохранение формул при заполнении данных в массив и переносе между двумя объектами списка Excel-VBA
  • Хранение массивов в Access VBA
  • Формула массива, возвращающая ARRAY без дубликатов, без VBA
  • Сборка массива в Excel VBA
  • Фильтрация 2D-массивов в Excel VBA
  • создание массива глобальных переменных массива в vba и перенос на лист
  • Interesting Posts

    C # извлекает форматированный текст из Excel через OLEDB

    Как изменить код для Excel 2007 для использования SaveAs

    Как я могу импортировать данные из файла базы данных SQL Server Sql в Excel?

    Чтение данных в реальном времени в Matlab, затем сохранение и отображение в реальном времени

    Как остановить excel от автоконверсии

    Excel Min Max для каждого дня сотрудника

    Диапазон («IV1»). Конец (xlToLeft). Колонна Возврат 1 после первой строки

    Разделение данных с листа excel на несколько книг

    Форматирование чисел Excel

    Скрыть / показать команду на основе динамически изменяющегося значения ячейки

    spring4, jboss eap 6.4.0 xlsx Ошибка загрузки файлов

    Экспорт данных, содержащих umlauts в .csv, который читается Excel

    каждая возможная комбинация содержимого двух столбцов в excel

    Создать файл excel – ошибка компиляции

    Как подсчитать количество диапазонов, которые происходят между определенными ячейками в Excel?

    Давайте будем гением компьютера.