Я хотел бы добавить значение в конец массива VBA. Как я могу это сделать? Я не смог найти простой пример в Интернете. Вот некоторый псевдокод, показывающий, что я хотел бы сделать.
Public Function toArray(range As range)
Dim arr() As Variant
For Each a In range.Cells
'how to add dynamically the value to end and increase the array?
arr(arr.count) = a.Value 'pseudo code
Next
toArray= Join(arr, ",")
End Function
microsoft-excel
vba
megloff
источник
источник
arr = Range.Value
?Ответы:
Попробуйте это [отредактировано]:
источник
UBound(arr)
требованиями, которыеarr
инициализируются с некоторым измерением, например,Dim arr(1) As Variant
но потомReDim Preserve
происходит сбой и появляется сообщение, что массив уже измерен? другими словами нельзя переделать массив в VBA?Collection
и преобразовать его впоследствии в массив. Любые другие предложения?UBound(arr)
требуется уже размерный массив. Ну, похоже, я должен использовать коллекцию вместо. В любом случае, спасибоЯ решил проблему с помощью коллекции и скопировал ее впоследствии в массив.
источник
Вот как я это делаю, используя переменную Variant (массив):
Или, если вам действительно нужен массив Variants (например, для передачи в свойство, такое как Shapes.Range), вы можете сделать это следующим образом:
источник
Если ваш диапазон представляет собой один вектор и если в столбце число строк меньше 16 384, вы можете использовать следующий код:
источник
Спасибо. Делаем то же самое с 2 функциями, если это может помочь другим нубам, таким как я:
Коллекция
1D Array:
использование
источник
Ответ находится в принятом ответе в (без проблемы ReDim):
/programming/12663879/adding-values-to-variable-array-vba
В резюме:
источник
источник