AW: dynamisches Array und Dimensionen
01.06.2008 13:04:00
Gerd
Hallo Werner,
aus einem 'alten' "Wort zum Sonntag" von Nepumuk.
Die letzte Dimension ist die, die ganz rechts steht.
Gruß Gerd
Um z.B. ein Array anzulegen, welches deine 16 Texte aufnehmen kann, deklarierst du erst das Feld für 16 Einträge
Dim strArray(15) As String
Die Zählung der Einträge beginnt normalerweise bei 0. Wenn du
Option Base 1
benutzt, dann bei 1. Du kannst aber die Untergrenze auch selbst angeben.
Dim strArray(5 To 20) As String
Das sind eindimensionale Arrays. Die kannst du so in einer Schleife ansprechen:
Public Sub test1()
Dim strArray(15) As String
Dim intIndex As Integer
For intIndex = 0 To 15
strArray(intIndex) = Chr$(intIndex + 65)
Next
End Sub
Eine andere Möglichkeit ein Array zu füllen wäre die Array - Funktion. Das funktioniert aber nur mit einer Variant - Variablen:
Public Sub test2()
Dim vntArray As Variant
Dim intIndex As Integer
vntArray = Array("A", "B", "C", "D", "F", "G")
For intIndex = 0 To 5
Debug.Print vntArray(intIndex)
Next
End Sub
Die bisher genannten Möglichkeiten haben aber den Nachteil, dass sie in ihrer Größe nicht änderbar sind. Das kannst du mit undimensionierten Arrays machen.
Public Sub test3()
Dim strArray() As String
Dim intIndex As Integer
ReDim strArray(3)
For intIndex = LBound(strArray) To UBound(strArray)
strArray(intIndex) = Chr$(intIndex + 65)
Next
ReDim strArray(5) 'alle Einträge gehen verloren
For intIndex = LBound(strArray) To UBound(strArray)
strArray(intIndex) = Chr$(intIndex + 65)
Next
ReDim Preserve strArray(8) 'die Einträge bleiben erhalten
For intIndex = LBound(strArray) To UBound(strArray)
strArray(intIndex) = Chr$(intIndex + 65)
Next
Erase strArray
End Sub
Hier haben wir mehrere Techniken angewendet.
1. Redim um ein Array in der Größe zu ändern, wobei alle Daten des Arrays verloren sind.
2. Redim Preserve zum umdimensionieren wobei die Daten erhalten bleiben. Das geht aber nur, wenn du die letzte Dimension eines Arrays änderst.
3. LBound um die Untergrenze und UBound um die Obergrenze der ersten Dimension zu erfahren.
4. Erase um die Eintrage eines Array zu löschen.
Das ist mal so ein grober Überblick zu eindimensionalen Arrays.....