2012-12-27 2 views
2

내가 배열에 Redim Preserve을 원합니다. 'subscript out of range'오류가 계속 발생합니다. 나는 마지막 차원의 크기 만 바꿀 수 있다는 사실을 알고 있습니다. 그것이 바로 내가하는 일입니다. 여기에 무슨 문제가 있습니까? 배열 유형은 Variant입니다. 당신이 범위의 Value 속성을 사용하여 aBmMatrix 배열을 할당하기 때문에Redim Preserve가 'subscript out of range'를 나타냅니다.

BmMatrix = Sheets("BENCH").Range("a60", ActiveSheet.Range("a60").End(xlDown).End(xlToRight)) 
'totaal gewicht per subdeel in array wegschrijven 
Dim aBmMatrix() 
aBmMatrix = BmMatrix 
rij = UBound(BmMatrix, 1) 
kol = UBound(BmMatrix, 2) + 1 
ReDim Preserve aBmMatrix(rij, kol) 
TotGewKol = UBound(aBmMatrix, 2) 
For i = 2 To UBound(BmMatrix, 1) 
    g = 0 'g wordt totaal gewicht van land bv 
    If BmMatrix(i, bm_kolom) <> "x" Then 
     For j = 2 To UBound(bmexnul, 1) 
      If bmexnul(j, weightkolom) = BmMatrix(i, bm_kolom) Then g = g + bmexnul(j, 10) 
     Next j 
    End If 
    aBmMatrix(i, TotGewKol) = g 
    aBmMatrix(1, TotGewKol) = "Totaal gewicht" 'titel kolom 
Next i 

답변

3

는, 반환 된 배열은 각 차원에 대한 1의 하한이있다.

명시 적으로 하한을 제공하지 않고 경계를 재 지정할 때 redim은 각 차원에 기본 하한 인 0을 할당하려고 시도합니다.

당신은 명시 적으로 하한 제공해야

:

ReDim Preserve aBmMatrix(lbound(aBmMatrix,1) to rij, lbound(aBmMatrix,2) to kol)