У меня длинный массив, который превышает максимальное количество строк в одном столбце (1048576), и я хочу вывести этот массив в несколько столбцов, например, если длина моего массива составляет 3145728, и поэтому я намерен создать3 отдельных массива, каждый с длиной 1048576, поэтому от 1 до 1048576 будут выводиться в столбец A, с 1048577 по 2097152 в столбец B и с 2097153 по 3145728 в столбец C. Мой код был следующим:
Sub test()
'for simplicity, just created a simply long array
Dim arrIn(1 To 3145728, 1 To 1) As Long
For i = 1 To 3145728
arrIn(i, 1) = i
Next i
'created 3 separate arrays, each with length of 1048576
Dim arrOut1(1 To 1048576, 1 To 1) As Long, arrOut2(1 To 1048576, 1 To 1) As Long, arrOut3(1 To 1048576, 1 To 1) As Long
Dim p As Long, p2 As Long, p3 As Long
'because counter p is going to be from 1 to 3145728, for the second and third arrays, the counter need to restart from 1 and upto 1048576
p2 = 1
p3 = 1
For p = 1 To 3145728
Select Case p
Case Is <= 1048576
arrOut1(p, 1) = arrIn(p, 1)
Case Is <= 2097152
arrOut2(p2, 1) = arrIn(p, 1)
p2 = p2 + 1
Case Is <= 3145728
arrOut3(p3, 1) = arrIn(p, 1)
p3 = p3 + 1
End Select
Next p
Range("A1:A1048576") = arrOut1
Range("B1048577: B2097152") = arrOut2
Range("C2097153:C3145728") = arrOut3
End Sub
Первый столбец (arrOut1) был выведен в столбец A, однако, когда дело доходит до второго столбца (arrOut2), VBA возвращает ошибку времени выполнения '1004': сбой Menthod 'Range' объекта '_Global'.
Я проверил результаты локальных окон, p2 и p3 были 1048577, и arrOut2 (1,1) = 1048577, arrOut2 (1,1) = 1048578 и т. Д., Кажется, что массивы все заполняются, однако яне уверен, что мешает им выплюнуть на колонны.Спасибо за ваш совет.