2

次のサブでオーバーフロー エリアが表示されますが、その理由がわかりません。コードをステップ実行すると、lRows と lCols が正しい値に設定され、redims が配列に正しい範囲を設定しますが、配列に範囲値を割り当てようとすると失敗します (オンライン: arrData = rng.value) . 私の行はしばしば約90,000以上になりますが、私はすべてを持っているので、それは問題ではないと思います...

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
4

1 に答える 1

0

試す

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

詳細については、この回答を参照してください

于 2013-11-06T20:51:08.067 に答える