Vergleich zwischen Collection und Array: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Pwania (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „Das Anlegen, Befüllen und Auslesen wird bei Collections und eindimensionalen Arrays sehr ähnlich gehandhabt: {| class="wikitable" ! Schritt ! Array ! Anme…“) |
Pwania (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
Zeile 56: | Zeile 56: | ||
Next lngIndex | Next lngIndex | ||
| Collection ist 1-basierend, Count ermittelt Anzahl der Elemente | | Collection ist 1-basierend, Count ermittelt Anzahl der Elemente | ||
|- | |||
| Wert überschreiben | |||
| | |||
... | |||
strArray(lngIndex) = "Neuer Wert" | |||
| In Arrays können die Werte beliebig überschrieben werden. | |||
| | |||
<span style="Color:blue">Public Function </span>ReplaceItemInCollection<span style="Color:gray">(</span><span style="Color:blue">ByVal </span>colInCollection<span style="Color:blue"> As </span>Collection<span style="Color:gray">,</span><span style="Color:blue"> ByVal </span>strNewItem<span style="Color:blue"> As String</span><span style="Color:gray">,</span><span style="Color:blue"> ByVal </span>lngItemIndex<span style="Color:blue"> As Long</span><span style="Color:gray">)</span><span style="Color:blue"> As </span>Collection | |||
<span style="Color:blue"> Dim </span>lngCount<span style="Color:blue"> As Long</span> | |||
<span style="Color:blue"> Set </span>ReplaceItemInCollection <span style="Color:gray">=</span> colInCollection | |||
<span style="Color:blue"> If </span>lngItemIndex <span style="Color:gray"><</span> <span style="Color:gray">1</span><span style="Color:blue"> Then Exit Function</span> | |||
lngCount <span style="Color:gray">=</span> ReplaceItemInCollection<span style="Color:gray">.</span>Count | |||
<span style="Color:blue"> If </span>lngItemIndex <span style="Color:gray">></span> lngCount<span style="Color:blue"> Then Exit Function</span> | |||
ReplaceItemInCollection<span style="Color:gray">.</span>Remove lngItemIndex | |||
<span style="Color:blue"> Select Case </span>lngItemIndex | |||
<span style="Color:blue"> Case </span><span style="Color:gray">1</span> | |||
<span style="Color:blue"> Select Case </span>lngCount | |||
<span style="Color:blue"> Case </span><span style="Color:gray">1</span> | |||
ReplaceItemInCollection<span style="Color:gray">.</span>Add strNewItem | |||
<span style="Color:blue"> Case Else</span> | |||
ReplaceItemInCollection<span style="Color:gray">.</span>Add strNewItem<span style="Color:gray">,</span> <span style="Color:gray">,</span> <span style="Color:gray">1</span> | |||
<span style="Color:blue"> End Select</span> | |||
<span style="Color:blue"> Case Else</span> | |||
ReplaceItemInCollection<span style="Color:gray">.</span>Add strNewItem<span style="Color:gray">,</span> <span style="Color:gray">,</span> <span style="Color:gray">,</span> lngItemIndex <span style="Color:gray">-</span> <span style="Color:gray">1</span> | |||
<span style="Color:blue"> End Select | |||
End Function</span> | |||
| 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). | |||
|} | |} | ||
Version vom 8. April 2020, 09:56 Uhr
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 |