Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1364to1368
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Collections innerhalb einer Collection

Collections innerhalb einer Collection
29.06.2014 00:32:46
Kuttel
Hallo zusammen,
ich bin leider etwas verwirrt, wenn es um das zuweilen recht komplexe Thema Collections geht. :-(
Man stelle sich vor, ich habe eine Collection (A). Darin enthalten sind vier Collections (A1, A2, A3, A4). Jede dieser vier colletions enthält nun eine jeweils unterschiedliche Anzahl einer Variablen (eines selbstdefinierten Datentyps). Hier nun meine Frage: Ich möchte z.B. auf die dritte Variable in Collection A2 zugreifen und diese verändern. Danach möchte ich die veränderte Variable dorthin zuruck schreiben wo ich sie her hatte. Dabei sollen alle anderen Variablen in dieser Collection A2 unverändert bleiben und andere Colletions (A1, A3 und A4) natürlich auch. Kann mir jemand behilflich sein und mir beispielhaft sagen, wie ich auf eine Variable einer (Sub-)Collection zugreife und diese Variable an die gleiche Stelle wieder zurück schreibe und somit die ursprüngliche Variable überschreibe... Das würde mir sehr weiterhelfen.
Vielen Dank schon einmal im Voraus für die Mühen!
Gruß
Kuttel

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Collections innerhalb einer Collection
29.06.2014 00:43:50
Mullit
Hallo,
hier mal ein Klasse-Tutorial über Collections( + Arrays),
Ist zwar aus Access Sicht, aber sollte 1:1 nach Excel-VBA übertragbar sein....
Gruß,

AW: Collections innerhalb einer Collection
29.06.2014 09:26:28
Nepumuk
Hallo,
eines selbstdefinierten Datentyps
Das geht nicht. In einer Collection kannst du nur Objekte oder einfache Variablen speichern. Also alles was du in einen Variant packen kannst. Du kannst benutzerdefinierte Datentypen in einer Collection durch ein Auflistungsklasse ersetzen. Dabei wird die Klasse in einer Collection verpackt.
Wenn du auf einen bestimmten Eintrag einer Collection zugreifen willst brauchst du entweder seinen Key oder seinen Index.
Gruß
Nepumuk

Anzeige
AW: Collections innerhalb einer Collection
29.06.2014 12:25:44
Kuttel
Hallo noch einmal,
Dank des wirklich sehr guten Tutorials bin ich nun etwas schlauer geworden. Frage mich aber dennoch, wie ich eine Variable (angenommen vom Typ VARIANT) aus einer Sub-Colletion heraushole und an die gleiche Stelle wieder zurückschreibe. Auslesen bekomme ich nun wohl hin, aber an die gleiche Stelle schreiben...? Wenn ich .add benutze wird die Variable ja erneut hinzugefügt und nicht überschrieben oder...?
Gruß
Kuttel

AW: Collections innerhalb einer Collection
29.06.2014 12:55:23
Daniel
Hi
Meines Wissens nach kannst du die Elemente einer Collection nicht ändern oder austauschen.
Wenn du bspw. den Eintrag Index 3 ändern willst, musst du diesen Eintrag löschen und einen neuen hinzufügen mit der Zusatzanweisung: nach Index 2 bzw. vor Index 3
Gruß Daniel

Anzeige
Element innheralb einer Collection überschreiben..
29.06.2014 13:07:12
Kuttel
Hallo,
Hier vielleicht mal ein konkretes Beispiel:
wie kann ich den Wert einer Variablen innerhalb einer Collection ändern und dabei die Position unverändert lassen, genauso wie andere Collections und Elemente?
Dim CollExtract as Collection
Dim Variable as Variant
Set CollExtract = SammelCollect(2) 'Gibt 2. Element der Collection zurück = eine Sub-Collection
Variable = CollExtract(4) 'Gibt 4. Element der Sub-Collection zurück = eine Variable
Variable = Variable + 1

Muß ich die Variable nun wieder in die Colletion zurück schieben?:

CollExtract.Remove(4)
CollExtract.Add(Variable,,,3)

Reicht das an dieser Stelle aus oder muss nun auch die Sub-Collection in die übergeordnete Sammel-Collection (per .Remove und .Add) wieder neu eingebracht werden? Durch die Set-Anweisung [Set CollExtract = SammelCollect(2)] bearbeite ich doch hoffentlich die Collection direkt und Änderungen werden somit übernommen, oder nicht...?
Danke und Gruß
Kuttel

Anzeige
Probiere es doch einfach aus!
29.06.2014 13:17:53
Daniel
Versuch macht kluch, wie mein Ex-Chef zu sagen pflegte.
Gruß Daniel

Element innheralb einer Collection überschreiben..
30.06.2014 10:10:48
Nepumuk
Hallo,
das geht nicht. Du kannst weder das Item noch den Key in einer Collection nachträglich ändern. Das geht nur über löschen und neu einfügen wie Daniel schon schrieb.
Du hast zwei Möglichkeiten.
1. Wenn du an Stelle der Collection eine Auflistungsklasse benutzt, kannst du die Items ohne löschen ändern und es bleibt alles im Standard-VBA. Zudem kannst du damit deinen benutzerdefinierten Datentyp simulieren.
2. Du benutzt an Stelle der Collection-Klasse die Dictionary-Klasse. Diese lässt das nachträgliche Ändern des Items wie des Keys zu. Aber auch diese Klasse kann keine benutzerdefinierten Datentypen speichern. Zudem hat sie einen entscheidenden Nachteil. Die Klasse ist ein Objekt der scrrun.dll welche ein Bestandteil des Windows-Scripting ist. Wenn deine Firma einen Scriptblocker einsetzt, kann es sein dass der Zugriff auf die dll eure IT-Abteilung alarmiert. Da auch Mailsysteme eingehende Mails daraufhin untersuchen, kann es zudem passieren, dass du diese Mappe per Mail nicht an bestimmte Firmen schicken kannst.
Gruß
Nepumuk
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige