Вставка массива Excel в ячейку (после изменения размера ячейки до размеров массива) - PullRequest
0 голосов
/ 19 июня 2019

Я хочу вставить двумерный массив из одной ячейки, расширяя диапазон с помощью RESIZE () до точного размера массива.

Я получаю ошибка запуска типа 13 несоответствие типов

ReDim conceptArray(1 To 5, NumberOfConcepts + 1)


Dim firstcellofTbl As range
    Set firstcellofTbl = qbaTbl.ListColumns("name").range.iTem(1).Offset(1, 0)
' this is just a test:
'firstcelloftbl is a single cell
firstcellofTbl.Select


firstcellofTbl.Resize(UBound(conceptArray, 2), UBound(conceptArray, 1)) = Application.Transpose(conceptArray)

Какой бы размер массива я ни принимал как должное. а) firstcellofTbl - это всего лишь одна клетка. И существует, так как выбор работает.

размер изменения имеет те же размеры, что и массив, потому что он просто изменяет размеры к размерам массива

c) изменение размера меняло оба измерения, поэтому application.transpose

это бит кода, который я добавил для тестирования:

 MsgBox UBound(conceptArray, 1)
 MsgBox UBound(conceptArray, 2)
 Dim newrange As range
    Set newrange = firstcellofTbl.Resize(UBound(conceptArray, 2), UBound(conceptArray, 1))
MsgBox newrange.address

существо: UBound (conceptArray, 1) = 5 UBound (conceptArray, 2) = 439

newrange.address =$a$3:$E$441

, который, кажется, совпадает, так как размер нового диапазона такой же, как у транспонированного массива

Что я, возможно, делаю неправильно? Большое спасибо

Примечание: использование этого способа вставки данных в лист-объект (или лист) происходит в миллионы раз быстрее, чем при заполнении цикла for, поэтому его и используют.

1 Ответ

0 голосов
/ 19 июня 2019

Проблема заключалась в том, что массив был измерен как вариант.

оригинал:

dim conceptarray() as variant

Решение:

dim conceptarray() as string
...