Hallo,
ich verwende VBA hinter Excel (Office 2007, Win XP), um die Datensätze einer Tabelle auszuwerten. Das nur zum Hintergrund.
Gestern habe ich über Stunden versucht, herauszufinden, warum dieser Laufzeitfehler ‚457‘ („Dieser Schlüssel ist bereits einem Element dieser Auflistung zugeordnet“) auftritt. Ich bin fest davon überzeugt, dass der Schlüssel, der in der Anweisung verwendet wird, noch NICHT für die Collection verwendet wurde. Deshalb neige ich diesmal eher zu unterstellen, dass das Problem nicht vor dem Monitor sitzt.
Ist jemandem dieses Verhalten bekannt? Ich dachte immer, dass man sich wenigstens auf so grundlegende Objekte wie Collections verlassen kann. Und ich suche wirklich eine Antwort auf dieses Problem und keine Workarounds!
Zu meinem konkreten Fall:
In einem Modul habe ich zuerst mein Collection-Objekt generell deklariert.
Public coll_runs As Collection
Dann habe ich in einer Funktion innerhalb eines Tabellen-Moduls die Inhalte der Tabelle zeilenweise abgearbeitet.
Die Schleife enthält folgende relevante Anweisungen:
s_run_no = ActiveSheet.Range(„C“ & i) ’ Durchlaufnummer aus Tabelle lesen
set o_run = … ’ Objekt der Nummer aus einer anderen Kollektion holen
debug.print s_run_no
coll_runs.Add o_run, s_run_no
Die Schleife bin ich im Debug-Mode mit F8 schrittweise durchgegangen und immer beim selben Objekt tritt der Fehler auf. Im Direktfenster kann ich alle Schlüssel sehen, die verwendet wurden und den, der nun verwendet werden soll. Dabei gibt es definitiv keine Duplikate. Das habe ich für den letzten Schlüssel geprüft und auch für alle Schlüssel untereinander (in Excel eingefügt, sortiert und doppelte Zeilen gesucht).
Ich habe eine Überwachung von coll_runs hinzugefügt und die Collection enthält nur die in der Schleife hinzugefügten Objekte, definitiv keine Altlasten!
Ich bin mit meinem Latein am Ende und hoffe, ihr könnt mir einen Ansatz offenbaren.
VG,
Sky