Vergleich zwischen Collection und Array
Zur Navigation springen
Zur Suche springen
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 |