Redim Preserve gives 'subscript out of range'

14,515

Because you assign aBmMatrix array using the Value property of a range, the returned array has lower bounds of 1 for each dimension.

When you later redim it without providing lower bounds explicitly, the redim tries to assign each dimension the default lower bound, which is 0.

You need to explicitly provide the lower bounds:

ReDim Preserve aBmMatrix(lbound(aBmMatrix,1) to rij, lbound(aBmMatrix,2) to kol)
Share:
14,515
Amir
Author by

Amir

Updated on June 05, 2022

Comments

  • Amir
    Amir almost 2 years

    I want to Redim Preserve an array I keep getting the error 'subscript out of range'. I am aware of the fact that only the size of the last dimension can be changed. That is exactly what I am doing. What is going wrong over here? The type of the array is Variant.

    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