Я хочу вставить двумерный массив из одной ячейки, расширив диапазон с помощью 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, вот причина его использования.
Каков тип и содержание conceptArray
?
LBound(conceptArray, 1) =1
LBound(conceptArray, 2)=0
conceptarray содержит текст
сложно, что Lbound(1) <> Lbound(2), поэтому я попробовал это: ReDim conceptArray(1 To 5, 1 To NumberOfConcepts + 1) >>>> та же ошибка
Это также работает: firstcellofTbl.Resize(UBound(conceptArray, 2), UBound(conceptArray, 1)).Select
Проблема заключалась в том, что массив был задан как вариант.
оригинал:
dim conceptarray() as variant
решение:
dim conceptarray() as string
Это может быть только половина правды, вы можете использовать варианты для записи в ячейки - за исключением случаев, когда вы вставляете что-то в один из членов, что как-то недействительно. В любом случае, приятно знать, что теперь это работает, но если бы я был с вами, я бы попытался выяснить, какие значения вызвали эту проблему.
Я попытаюсь выяснить, так ли это, на небольшом примере.
Каковы значения
LBound(conceptArray, 1)
иLBound(conceptArray, 2)
?