Run-Time 424 beim aktualisieren eines collection-items

07/12/2009 - 18:44 von Richard Ohl | Report spam
Hallo,
ich verzweifle gerade bei der Suche nach einer Lösung, wie ich ein Item
einer collection aktualisieren kann. Ich bekomme beim Versuch immer den
Runtime-Error 424 an den Kopf geworfen. Ist es möglich, dass man ein Item
nicht überschreiben, sondern nur entfernen und wieder hinzufügen kann?
Google und die OH sind leider keine Hilfe...

Mein Versuch:
Public Function foobar()
Dim foo As Collection
Set foo = New Collection
foo.Add 123, "foo"
foo.Add 345, "bar"
Debug.Print foo("bar") ' gibt 345 aus
foo("bar") = 789 ' Runtime error 424
End Function

Ein kurzer, gezielter Schubs in die richtige Richtung wàre großartig!
Herzlichen Dank für jeden Tipp,
Richard
"Nein": orales Verhütungsmittel. (Joan Vichers)
 

Lesen sie die antworten

#1 Jörg Ackermann
08/12/2009 - 09:28 | Warnen spam
Hallo Richard,

Richard Ohl meinte:


ich verzweifle gerade bei der Suche nach einer Lösung, wie ich ein
Item einer collection aktualisieren kann. Ich bekomme beim Versuch
immer den Runtime-Error 424 an den Kopf geworfen. Ist es möglich,
dass man ein Item nicht überschreiben, sondern nur entfernen und
wieder hinzufügen kann? Google und die OH sind leider keine Hilfe...

Mein Versuch:
Public Function foobar()
Dim foo As Collection
Set foo = New Collection
foo.Add 123, "foo"
foo.Add 345, "bar"
Debug.Print foo("bar") ' gibt 345 aus
foo("bar") = 789 ' Runtime error 424
End Function

Ein kurzer, gezielter Schubs in die richtige Richtung wàre großartig!



Ein Collection-Item ist per se erst mal ReadOnly.
Du mußt es also entfernen und mit neuem Wert anfügen.

Alternativ kannst Du eine Klasse verwenden:
'-
Klasse ColValue:
'-
Private m_Value As Long

Public Property Get Value() As Long
Value = m_Value
End Property

Public Property Let Value(lngValue As Long)
m_Value = lngValue
End Property
'-

Und dann folgendes tun:

Public Function foobar()

Dim foo As VBA.Collection
Dim v As ColValue

Set foo = New VBA.Collection

Set v = New ColValue
v.Value = 123
foo.Add v, "foo"
Set v = New ColValue
v.Value = 345
foo.Add v, "bar"
Debug.Print foo("bar").Value
foo("bar").Value = 789
Debug.Print foo("bar").Value

End Function

Gruß Acki


Mitglied im DBDEV http://www.dbdev.org
Access-FAQ: http://www.donkarl.com

Ähnliche fragen