Das Anlegen, Befüllen und Auslesen wird bei Collections und eindimensionalen Arrays sehr ähnlich gehandhabt:
| Schritt
|
Array
|
Anmerkungen
|
Collection
|
Anmerkungen
|
| Deklaration
|
Dim strArray() As String
|
|
Dim colCollection As Collection
|
|
| Vor dem ersten Einsatz
|
ReDim strArray(3)
|
Die Anzahl der erwarteten Einträge muss bekannt sein. Da das Array 0-basiert ist, wird hier der höchste erwartete Index angegeben (Anzahl - 1).
|
Set colCollection = New Collection
|
Die Collection muss initialisiert werden, damit sie die Elemente aufnehmen kann.
|
| Erstes Element
|
strArray(0) = "Max"
|
Das Array enthält nach der Dimensionierung die geforderte Anzahl von leeren Plätzen. Jedes Element wird einem Platz zugeordnet.
|
colCollection.Add "Max"
|
Die Collection ist ursprünglich leer, einzelne Elemente werden mit 'Add' hinzugefügt.
|
| Weitere Elemente
|
strArray(1) = "Moritz"
strArray(2) = "Hempel"
strArray(3) = "Bolte"
|
|
colCollection.Add "Moritz"
colCollection.Add "Hempel"
colCollection.Add "Bolte"
|
|
| Werte abfragen
|
For lngIndex = 0 To UBound(strNames)
Debug.Print strArray(lngIndex)
Next lngIndex
|
Array ist 0-basierend, UBound ermittelt letzten Index.
|
For lngIndex = 1 To colNames.Count
Debug.Print colNames.Item(lngIndex)
Next lngIndex
|
Collection ist 1-basierend, Count ermittelt Anzahl der Elemente
|
| Wert überschreiben
|
...
strArray(lngIndex) = "Neuer Wert"
|
In Arrays können die Werte beliebig überschrieben werden.
|
Public Function ReplaceItemInCollection(ByVal colInCollection As Collection,
_ ByVal strNewItem As String, ByVal lngItemIndex As Long) As Collection
Dim lngCount As Long
Set ReplaceItemInCollection = colInCollection
If lngItemIndex < 1 Then Exit Function
lngCount = ReplaceItemInCollection.Count
If lngItemIndex > lngCount Then Exit Function
ReplaceItemInCollection.Remove lngItemIndex
Select Case lngItemIndex
Case 1
Select Case lngCount
Case 1
ReplaceItemInCollection.Add strNewItem
Case Else
ReplaceItemInCollection.Add strNewItem, , 1
End Select
Case Else
ReplaceItemInCollection.Add strNewItem, , , lngItemIndex - 1
End Select
End Function
|
Wenn man in einer Collection ein Element nachträglich mit einem neuen Wert belegen möchte, muss man es entfernen und neu an der alten Stelle hinzufügen (siehe Beispielfunktion).
|
Große Unterschiede offenbaren sich jedoch, wenn man die zusätzlichen Parameter der Add-Methode zur Positionierung eines Elementes und der Vergabe eines eindeutigen Schlüssels oder die Vorgehensweise beim Verschieben von Elementen betrachtet:
| Schritt
|
Array
|
Anmerkungen
|
Collection
|
Anmerkungen
|
| Element löschen
|
|
|
|
|
| Neues Element positionieren
|
|
|
|
|
| Positionen vertauschen
|
|
|
|
|
| Schlüssel verwenden
|
|
|
|
|