Wie kann ich einen array um indexe erweitern?
zb:
Dim debugvar() As Variant
debugvar = Array(0, „eins“)
debugvar(1) = „zwei“
debugvar(2) = „drei“
fehler
out of range
ich möchte einen array füllen von dem ich nicht genau weiss wie gross er wird . Wie geht das?
dnake
Roland
Hallo Roland,
Wie kann ich einen array um indexe erweitern?
Dim ar(1) As string
ar(0) = "Erster String"
ar(1) = "Zweiter String"
ReDim Preserve ar(2)
ar(3) = "Dritter String"
Redim Preserve ar(Ubound(ar()) + 1)
ar(4) = "Vierter String"
Das Preserve beim Dim verhindert, dass die bereits gespeicherten Werte ‚verloren‘ gehen.
Gruss
Thomas
Da bin ich doch glatt mit den Indizes durcheinandergeraten 
So ists richtig:
Dim ar(1) As string
ar(0) = "Erster String"
ar(1) = "Zweiter String"
ReDim Preserve ar(2)
ar(2) = "Dritter String"
Redim Preserve ar(Ubound(ar()) + 1)
ar(3) = "Vierter String"
danke für die antwort
hm, seltsam seltsam,
wie kann ich das automatisch machen?
sagen wir mal ich bekomme einen Recordset dessen grösse ich nicht kenne den ich aber trotzdem in einen array schreiben möchte.
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
danke für die antwort
hm, seltsam seltsam,
wie kann ich das automatisch machen?
sagen wir mal ich bekomme einen Recordset dessen grösse ich
nicht kenne den ich aber trotzdem in einen array schreiben
möchte.
Bei unbekannter Größe des Recordsets empfiehlt sich folgendes Vorgehen:
Deklarationsteil des Programms:
Dim ar(0) As String
dann folgen die Verbindung zur Datenbank und die Abfrage. Ergebnis steht im Recorset (rs)
Counter = 0
While Not(rs.EOF)
ReDim Preserve ar(Counter)
ar(Counter) = rs.Fields("Feldname).Value
Counter = Counter + 1
rs.MoveNext
Wend
Wenn alles unbekannt ist, kannst Du die Dimensionen des Arrays mit UBound bzw. LBound (wenn jemand so wahnsinnig war und option base geändert hat
) ermitteln.
wobei man sich konkret fragen sollte, ob das Umspeichern in ein Array überhaupt notwendig ist.
Darüber hinaus: im Fall eines Recordsets weisst du ja, wie groß dein Array werden muss - das dann jeweils zeilenweise zu Redimmen ist nun auch nicht gerade genial!
Gruß aud dem Norden
Reinhard Kraasch
1 „Gefällt mir“
geht noch einfacher
Hallo Thomas!
ich korrigiere ungern Code von „Kollegen“, aber diesmal tue ich es:
Dim ar() As String
redim ar(rs.recordcount-1)
Die Anzahl der Datensätze ist nämlich immer bekannt.
Grüße
Gollum
Hallo
ich korrigiere ungern Code von „Kollegen“, aber diesmal tue
ich auch 
Die Anzahl der Datensätze ist nämlich immer bekannt.
Nicht immer, gewisse Cursors nämlich nicht.
Gruss