简体   繁体   中英

Runtime error 9 “subscript out of range” array redim preserve vba

my code copies all the values of a table in excel on an array an filter them and fill a combobox with it, but I keep geting this error on my code and after debuging it's seems that the error is due to Redim Preserve ... can you check it please ?

' FIll CB2()

 Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("D1") 
 Dim LC As Long 
 Dim i As Long 
 Dim PN As Long 
 Dim myArray() As String 
 Dim j As Long 
 Dim k As Long 
 Dim temp As String

LC = ws.Cells(ws.Rows.Count, 4).End(xlUp).Row

    For i = 1 To LC

        If StrComp(CB1.List(CB1.ListIndex, 0), ws.Cells(i, 4), vbTextCompare) = 0 Then



        'Set you array with the right dimension
        ReDim Preserve myArray(0 To PN, 0 To 1)

        myArray(PN, 0) = ws.Cells(i, 2)
        myArray(PN, 1) = ws.Cells(i, 3)

        PN = PN + 1


        End If

    Next i 
End Sub

There is nothing to "Preserve" when the Redim statement is called for the first time in your loop. Call Redim without "Preserve" when you dimension the array for the first time.

If the line of code that dimensions variables is real code it is surprising that it doesn't call an error. I suggest to place each Dim statement in a line by itself, for better readability of the code if for no other reason, and avoid the use of the colon quite generally but especially for the purpose of mixing declarations with value assignment.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM