2016-06-22 6 views
0

워크 시트 wsTemp에서 범위를 복사 할 때 arrSpecificWS 배열을 늘리려고합니다. subscript가 범위를 벗어났습니다. ReDim Preserve arrSpecificWS (UBound (arrSpecificWS, 1) +1) 행에 오류가 있습니다. 내가 뭘 놓치고 있니?배열에 셀 복사 VBA

Dim I as long 
Dim arrSpecificWS() 

'Prepare data to the array 
    ReDim arrSpecificWS(0, 1 To 6) 



For i = 2 To wsTemp.UsedRange.Rows.count 
    arrSpecificWS(UBound(arrSpecificWS), 1) = wsTemp.Range("D2" & i).Value 
    arrSpecificWS(UBound(arrSpecificWS), 2) = wsTemp.Range("E2" & i).Value 
    ReDim Preserve arrSpecificWS(UBound(arrSpecificWS, 1) + 1) 
    ReDim Preserve arrSpecificWS(UBound(arrSpecificWS, 2) + 1) 

Next i 
+0

http://stackoverflow.com/questions/7847284/subscript-out-of-range-with-redim-vba – Whencesoever

+0

다차원 배열에서 보존을 사용할 수 없습니까? – Gudbahri

+0

할 수 있지만 한 차원 만 변경할 수 있습니다. – Whencesoever

답변

0

코드의 단축 버전입니까? 그렇지 않다면 배열에 범위를 추가하기 만하면 범위를 반복하고 한 번에 하나의 셀에 값을 할당해야하는 이유는 무엇입니까? 당신은 이런 식으로 범위를 지정하여 배열을 설정할 수 있습니다

Dim arrRange() As Variant ' declare an unallocated array. 
arrRange = Range("D2:E" & wsTemp.UsedRange.Rows.count) 

이 훨씬 빠르다 한 다음 redimming 배열을 가진 원숭이가 없습니다.

+0

감사합니다. @Tim, 위 코드는 제가 작성한 코드의 일부입니다. 각 셀의 위치를 ​​구별하여 특정 기준에 따라 셀을 조작 할 수있게하려고했습니다. 다음은 실제로 내가 다루고있는 일을 위해 일했습니다. (1) = wsTemp.Cells (I, 4) .Value arrSpecificWS (2) = wsTemp.Cells (I – Gudbahri

+0

제가 = 2 wsTemp.UsedRange.Rows.count ReDim을 행 (I 2) outerArrData 보존 들어 arrSpecificWS 5) .Value arrSpecificWS (3) = wsTemp.Cells (I, 6) .Value outerArrData (I) = arrSpecificWS 다음으로 – Gudbahri