Dyn. Array - wer findet den Fehler zuerst? :D

sra

Erfahrenes Mitglied
Hallo

Ich rätsle bereits seit einiger Zeit an diesem Missglückten Versuch eines dynamischen Arrays in VB. Er bringt beim ersten Erreichen der Zeile mit dem redim Befehl eine Fehlermeldung (Index sei ausserhalb des gültigen Bereichs). Nehme ich das Preserve weg, geht es... allerdings sind dann die ganzen Werte weg.

Code:
zaehler = 0
Dim demTables() As String
ReDim demTables(1, 2)

With DB
    For i = 0 To .TableDefs.Count - 1
        If Left(.TableDefs(i).Name, 13) = "tblPersImport" Then
                
            If Len(DB.TableDefs(i).Name) = 20 Then 'x_2003
                demTables(zaehler, 0) = Right(.TableDefs(i).Name, 4) ' jahr
                demTables(zaehler, 1) = Left(Right(.TableDefs(i).Name, 6), 1) ' monat
            Else 'xx_2003
                demTables(zaehler, 0) = Right(.TableDefs(i).Name, 4) 'jahr
                demTables(zaehler, 1) = Left(Right(.TableDefs(i).Name, 7), 2) 'monat
            End If
                
            zaehler = zaehler + 1
            ReDim Preserve demTables(0 To zaehler, 0 To 1)
        End If
    Next i

Vielleicht noch schnell der Hintergrund. Diese Funktion soll alle Tabellen aus einer Datenbank, welche mit "tblPersImport" anfangen in einer Combobox auflisten. Ich fülle das ganze aber erst in ein Array, um die Tabellen nach Monat und Jahr zu sortieren. (Als Beispiel für einen Tabellennamen .TableDefs(i).Name ist "tblPersImport_12_2004").

Danke für eure Hilfe
 
Bei dem wievielten Durchlauf der Schleife kommt denn der Fehler?
Warum lässt du das Array eigentlich in der 3 Zeile beim Index 1 bzw. bei der zusätzlichen Dimension beim Index 2 beginnen (-->"ReDim demTables(1, 2)") und anschließend wieder bei Null? (-->"ReDim Preserve demTables(0 To zaehler, 0 To 1)")
 
Zurück