Я получаю область переполнения в следующем подразделении, и я не могу понять, почему. Выполняя код, lRows и lCols устанавливаются в правильные значения, а повторы устанавливают правильные диапазоны на массивах, но он терпит неудачу, когда я пытаюсь присвоить значения диапазона массиву (on line: arrData = rng.value) , Мои строки действительно часто идут до около 90,000+, но у меня есть все, как долго, так что я думаю, что бы это не было бы проблемой ...Ошибка переполнения Excel VBA с динамическим массивом
Sub test()
Dim arrData() As Variant
Dim arrReturnData() As Variant
Dim rng As Excel.Range
Dim lRows As Long
Dim lCols As Long
Dim i As Long, j As Long
lRows = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
lCols = ActiveSheet.Range("A1").End(xlToRight).Column
ReDim arrData(1 To lRows, 1 To lCols)
ReDim arrReturnData(1 To lRows, 1 To lCols)
Set rng = ActiveSheet.Range(Cells(1, 1), Cells(lRows, lCols))
arrData = rng.value ' Overflow error on this line
For j = 1 To lCols
For i = 1 To lRows
arrReturnData(i, j) = Trim(arrData(i, j))
Next i
Next j
rng.value = arrReturnData
End Sub
То, что вы делаете, это не то, что я пробовал, но я никогда не видел, чтобы кто-то пытался установить массив таким образом. Получаете ли вы тот же результат, если вы скопируете ячейку по ячейке? –
Просто был мини-инсульт, и внезапно мне стало ясно, что я попытаюсь. Value2 вместо .value. Исправлена проблема. – Methonis
Вам не нужно «ReDim arrData». Фактически вы должны объявлять 'arrData As Variant', а не как массив. –