Не очень понятно, как вы устанавливаете целевую ячейку, в любом случае вы можете попробовать это (следуя логике вашего примера):
Dim Trg as Range
With Sheets("DATABASE").ListObjects(1)
Set Trg = .DataBodyRange.Cells(.ListRows.Count, 1)
End With
Trg.Resize(UBound(arr, 1), UBound(arr, 2)) = arr
Легко вставить содержимое массива в диапазон, если вы можете заранее указать верхнюю левую ячейку и нижнюю правую ячейку целевого диапазона, так что вы можете сказать
Range("B8:E16") = arr
Если вы знаете только верхнюю левую ячейку и хотите динамически установить размер целевого диапазона, используйте .Resize
, например:
Range("B8").Resize(UBound(arr, 1), UBound(arr, 2)) = arr
NB. Если целевой диапазон меньше массива, то копируется только этот объем данных, остальное пропускается.