Ich habe das Problem, dass das Aufrufen der Remove-Methode für das Scripting.Dictionary-Objekt nicht funktioniert.Excel VBA-Wörterbuch Entfernen von Elementen
Dim temp As String
Set dict = CreateObject("Scripting.Dictionary")
dict .Add(2,"asd")
dict .Add(3,"asd")
dict .Add(4,"asd")
dict .Add(5,"asd")
dict .Add(6,"asd")
For Each Key in dict.Keys
temp = Key
If(Key > 3) Then
dict.Remove(temp)
End If
Next
Die Ausführung dieses Codes ergibt die gleiche Anzahl von Elementen im Wörterbuch für mich.
Edit: Ich habe nur den Code geändert, um die tatsächliche Nutzung besser widerzuspiegeln. Wie sich herausstellt, ist hier die String-Konvertierung fehlerhaft. Nach dem Umwandeln des Schlüssels in eine Zeichenfolge kann das Wörterbuch die Werte nicht korrekt zuordnen. Leider hat es mir nicht geholfen, eine Lösung für das Problem zu finden.
Edit2: Das Key-Objekt selbst ist vom Typ Range. Die Zuweisung zu einer String-Variablen führt zu dem Problem, dass der Vergleich bei der Operation remove fehlschlägt. Ich habe versucht, Varianten als Alternative zu verwenden, aber der Key wird trotzdem in String umgewandelt.
versuchen dict.Keys() –
Funktioniert nicht. Ich sollte beachten, dass ich keine Fehlermeldung bekomme. Die relevanten Einträge werden einfach nicht entfernt. – narain
Verwenden Sie keine Paranthese in Entfernen –