Anzeige
Archiv - Navigation
896to900
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
896to900
896to900
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Collection Indexwert

Collection Indexwert
15.08.2007 11:15:20
Jan
Moin,
ich benutze eine For Each Schleife um über die Elemente einer Collection zu iterieren. In einem bestimmten Fall muss das jeweils aktuelle Element aus der Collection entfernt werden. Ungefähr so:

For Each element in myCollection
If entfernungsBedingung Then
myCollection.Remove(indexwertElement)
End If
Next element


Das geht leider nicht so ohne weiteres, da ich für die Remove Methode den Indexwert des betreffenden Elements wissen muss und den hab ich (zur Zeit) nicht vorgesehen. Kann ich den Indexwert nachträglich (im Rahmen der For Each Schleife) rausfinden oder muss ich ihn die ganze Zeit über vorhalten?
Beste Grüße,
Jan

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Collection Indexwert
15.08.2007 11:23:00
Ramses
Hallo
"...oder muss ich ihn die ganze Zeit über vorhalten?..."
Eigentlich Ja, aber probiers mal so
myCollection.Remove(Element)
Element ist ja das Object das du über die For-Next-Schleife abfrägst
Gruss Rainer

AW: Collection Indexwert
15.08.2007 11:26:00
Jan
"Eigentlich Ja, "
das hatte ich schon befürchtet. :-(
myCollection.Remove(Element) hab ich schon probiert, geht leider auch nicht.
trotzdem Danke für die schnelle Antwort.
Beste Grüße!

AW: Collection Indexwert
15.08.2007 11:55:00
Gerd
Hallo Jan,
dies ist mir alles etwas theoretisch.
Daher nur ein Hinweis darauf, dass das Dingens eine Count-Eigenschaft hat.
Gruß Gerd

Anzeige
AW: Collection Indexwert
15.08.2007 13:25:40
Jan
Moin Gerd
Was ich brauche:
eine Funktion, die mir aus der For Each Schleife heraus den Indexwert des aktuellen Elementes gibt.
Sagen wir mal ich hab 10 Zinsassets in einer Collection Portfolio. Für jedes Jahr und jedes Zinsasset wird in einer For Each Schleife getestet, ob es im betreffenden Jahr ausgelaufen ist. Ist das der Fall, soll es aus dem Portfolio entfernt werden.
Um das Zinsasset aus dem Portfolio zu entfernen brauche ich seinen Indexwert (die Mächtigkeit der Menge der Indexwerte von der Portfolio Collection ist myPortfolio.Count), den ich nicht vorgehalten habe. Wenn man den Indexwert nicht vorhält, braucht man also eine Möglichkeit ihn ad hoc (in diesem Fall während des Durchlaufs der For Each Schleife) herauszubekommen. Das geht (soweit ich bisher rausgefunden habe) wohl leider nicht.
Da sich der Indexwert der einzelnen Zinsassets ändert, sobald welche aus dem Portfolio entfernt werden, habe ich das ganze jetzt über eine Eigenschaft der Zinsassets gelöst, die statisch ist.
Jedes Zinsasset hat eine Eigenschaft "Name", die eineindeutig ist. Beim Hinzufügen der einzelnen Zinsassets zum Portfolio benutze ich die Namenseigenschaft als benutzerdefinierten Indexwert (genannt "key").
Die Syntax sieht dann anstelle von:

myPortfolio.Add myZinsasset


so aus:


myPortfolio.Add myZinsasset, myZinsasset.Name


Aus Performancegründen wäre es mir eigentlich lieber, das ganze über den Indexwert zu lösen, aber quick'n'dirty geht es erstmal so ;-)
Beste Grüße,
Jan

Anzeige
AW: Collection Indexwert
15.08.2007 13:40:47
Ramses
Hallo
":..Das geht (soweit ich bisher rausgefunden habe) wohl leider nicht...."
Wer sagt das ?
i = 0
For Each Element in myCollection.Elements
i = i + 1
If element = irgendwas Then
myCollection(i).Remove
End if
next
Sollte doch gehen,... oder ?
Gruss Rainer

AW: Collection Indexwert
15.08.2007 13:51:07
Jan
Moin Rainer,
klar geht das. Was ich meinte war, dass es keine vorgesehene Funktion wie z.B.

For Each element In myCollection
indexwert = myCollection.IndexValue(element)
Next element


oder so ähnlich gibt. Als Workaround ist Deine Lösung aber auf jeden Fall auch denkbar, besten Dank dafür.
Beste Grüße,
Jan

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige