Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Key aus Collection ermitteln

Forumthread: Key aus Collection ermitteln

Key aus Collection ermitteln
21.01.2006 10:30:01
Norman
Hallo alle,
ich habe einer Collection einen Wert mit Key hinzugefügt:
myCollection.Add oMyObject, sMyKey
Jetzt möchte ich mittels folgendem Code die Keys (irgendwie :) auslesen:
dim o
for each o in myCollection
debug.print ?
next o
Kann ich den Key eines Wertes in einer Collection ermitteln, ohne ihn irgendwo gesondert speichern zu müssen?
Vielen Dank und viele Grüße
Norman
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Key aus Collection ermitteln
21.01.2006 11:42:34
Nepumuk
Hallo Norman,
in einer Collection kommst du an die Keys nicht mehr ran. Benutze ein Dictionary-Objekt, das ist wesentlich komfortabler.
Public Sub test()
    Dim objDictionary As Object
    Dim objKeys As Variant, objItems As Variant
    Dim lngIndex As Long
    Set objDictionary = CreateObject("Scripting.Dictionary")
    objDictionary.Add "Key1", "Item1"
    objDictionary.Add "Key2", "Item2"
    objDictionary.Add "Key3", "Item3"
    objItems = objDictionary.Items
    objKeys = objDictionary.Keys
    For lngIndex = 0 To objDictionary.Count - 1
        Debug.Print objItems(lngIndex), objKeys(lngIndex)
    Next
End Sub

Gruß
Nepumuk

Anzeige
OT: Vielen Dank, wie immer gut :)
21.01.2006 19:12:12
Norman
Gruß
Norman
;
Anzeige
Anzeige

Infobox / Tutorial

Schlüssel aus einer Excel Collection ermitteln


Schritt-für-Schritt-Anleitung

Um die Keys aus einer Collection in Excel VBA auszulesen, kannst du folgendes Vorgehen anwenden:

  1. Erstelle eine Collection: Füge Werte mit einem Key hinzu.

    Dim myCollection As Collection
    Set myCollection = New Collection
    myCollection.Add oMyObject, "MeinKey"
  2. Iteriere über die Collection: Da die Keys einer Excel Collection nicht direkt abgerufen werden können, solltest du ein Dictionary verwenden.

  3. Nutze ein Dictionary: Erstelle ein Dictionary, um sowohl Keys als auch Items zu speichern:

    Dim objDictionary As Object
    Set objDictionary = CreateObject("Scripting.Dictionary")
    objDictionary.Add "Key1", "Item1"
    objDictionary.Add "Key2", "Item2"
  4. Lese die Keys aus:

    Dim objKeys As Variant
    objKeys = objDictionary.Keys
    For i = LBound(objKeys) To UBound(objKeys)
       Debug.Print objKeys(i)
    Next i

Häufige Fehler und Lösungen

  • Fehler: Versuch, direkt auf Keys einer Collection zuzugreifen.

    • Lösung: Verwende stattdessen ein Dictionary, da die Excel Collection keine direkte Methode bietet, um die Keys abzufragen.
  • Fehler: Object variable or With block variable not set.

    • Lösung: Stelle sicher, dass das Dictionary korrekt erstellt und initialisiert wurde.

Alternative Methoden

Eine Alternative zur Verwendung einer Excel Collection ist das Nutzen von Excel VBA Dictionaries. Dictionaries bieten eine komfortablere Möglichkeit, sowohl den Zugriff auf Werte als auch auf die zugehörigen Keys zu ermöglichen. Hier ein Beispiel zur Verwendung eines Dictionaries:

Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")
dict.Add "A", 1
dict.Add "B", 2

Dim key As Variant
For Each key In dict.Keys
    Debug.Print key & ": " & dict(key)
Next key

Praktische Beispiele

Hier ist ein praktisches Beispiel, wie du mit einem Dictionary arbeiten kannst, um Werte und ihre zugehörigen Keys auszulesen:

Public Sub Beispiel()
    Dim dict As Object
    Set dict = CreateObject("Scripting.Dictionary")

    dict.Add "Apfel", 1
    dict.Add "Banane", 2
    dict.Add "Kirsche", 3

    Dim i As Integer
    For i = 0 To dict.Count - 1
        Debug.Print dict.Keys()(i) & ": " & dict.Items()(i)
    Next i
End Sub

Tipps für Profis

  • Verwende Dictionaries anstelle von Collections: Wenn du häufig mit Keys arbeiten musst, ist das Dictionary die bessere Wahl.

  • Performance optimieren: Bei großen Datenmengen kann die Verwendung von Dictionaries die Performance erheblich steigern, da sie eine schnellere Zugriffszeit bieten.

  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung in deinen VBA-Skripten, um unerwartete Fehler beim Auslesen von Keys zu vermeiden.


FAQ: Häufige Fragen

1. Kann ich die Keys einer Excel Collection einfach auslesen?
Nein, die Excel Collection bietet keine Möglichkeit, die Keys direkt auszulesen. Verwende ein Dictionary stattdessen.

2. Wie sind die Unterschiede zwischen einer Collection und einem Dictionary in VBA?
Dictionaries bieten eine einfachere Handhabung von Keys und Items, während Collections mehr Einschränkungen haben und weniger Funktionalitäten bieten.

3. Funktioniert dieses Beispiel in allen Excel-Versionen?
Ja, das Beispiel mit dem Dictionary sollte in allen gängigen Excel-Versionen ab Excel 2000 funktionieren, vorausgesetzt, die Scripting Runtime ist aktiviert.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige