2013-11-06 5 views
2

Я получаю область переполнения в следующем подразделении, и я не могу понять, почему. Выполняя код, 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 
+0

То, что вы делаете, это не то, что я пробовал, но я никогда не видел, чтобы кто-то пытался установить массив таким образом. Получаете ли вы тот же результат, если вы скопируете ячейку по ячейке? –

+1

Просто был мини-инсульт, и внезапно мне стало ясно, что я попытаюсь. Value2 вместо .value. Исправлена ​​проблема. – Methonis

+0

Вам не нужно «ReDim arrData». Фактически вы должны объявлять 'arrData As Variant', а не как массив. –

ответ

0

попробовать

Dim arrData as Variant 
arrData = Range(Cells(1, 1), Cells(lRows, lCols)) 

и более info see this answer

Смежные вопросы