Collection oder Array nachträglich ohne Duplikate?
24.11.2008 18:27:00
Andreas
lange war ich nicht mehr hier, da mir die Arbeit mit dem Forum und das anschließende "allein rumbasteln" viel Wissen über Excel und VBA beschert hat. Aber heute stehe ich auf dem Schlauch...
Ich lasse den Bereich der DataFields einer Pivottabelle zeilenweise untersuchen. Wenn die Gesamte Selection in Zeile i = 0 ist, dann merke ich mir das betreffende PivotItem, um es später dann mit allen anderen, die noch dieses Kriterium erfüllen, auf visible = false zu setzen. Es soll eine Nullwert unterdrückung werden, die die Übersichtlichkeit erhöht.
Bisher habe ich alle Werte die die Kriterien erfüllen, in einer Collection gesammelt. Nach dem Akt des collectens habe ich dann über eine For Each Schleife alle Werte der Collection auf visible = false setzen lassen. Problem: Der Code lief lang. Auch schon mit deaktiviertem ScreenUpdating. Grund dafür: Es lagen Werte doppelt vor in der Collection. Sachlogisch ist das durchaus korrekt. Für die Performance aber nicht gut. Ich dachte bisher auch immer, eine Collection sorgt von sich aus dafür, daß keine Duplikate in ihr enthalten sind. Das hatte ich hier im Forum gelesen, scheint aber nicht korrekt zu sein?!
Wie kann ich beim Erstellen einer Collection (oder eines Arrays) Duplikate verhindern. Ich lese String Werte ein. Ich habe schon probiert mit 'WorksheetFunction.countif/ Match/ find/ etc.' zu arbeiten. Aber all diese Funktionen benötigen Ranges, um korrekt zu arbeiten.
Der Code soll direkt in die Collection (oder Array) gucken und prüfen: Bist du, lieber Textstring schon drin, wenn ja, dann kommst Du nicht noch einmal rein.
Ich könnte ja die Collection seinerseits wieder durch eine Schleife durchlaufen lassen, aber gibt es da keine elegantere Methode?
Vielen Dank und Grüße, Andreas Hanisch