Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1848to1852
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Dictionary als Variant deklarieren

Dictionary als Variant deklarieren
13.10.2021 20:27:00
SchubertFranzl
Hallo
In folgendem Makro bin ich gezwungen, die Variable "Verzeichnis" als Variant zu deklarieren, obwohl sie als Dictionary gedacht sind.
Sicher, das Makro läuft auch so, aber die Kontrolle der richtigen Deklaration der Übergabevariable bei Aufruf von WertSetzen fällt weg. Und das stört mich ein wenig.

Sub Test()
Dim dAuto   As Object
Dim dMarke  As Variant
Set dAuto = CreateObject("Scripting.Dictionary")
Set dAuto("Mercedes") = CreateObject("Scripting.Dictionary")
Set dAuto("Audi") = CreateObject("Scripting.Dictionary")
Set dAuto("BMW") = CreateObject("Scripting.Dictionary")
For Each dMarke In dAuto.items()
Call WertSetzen(dMarke)
Next dMarke
Debug.Print "Wert", dAuto("Audi")("Wert")
End Sub

Sub WertSetzen(Verzeichnis As Variant)
Verzeichnis("Wert") = 250
End Sub
dMarke muss wegen For Each wohl Variant sein, aber ich möchte die For Each-Schleife verwenden.
Was sagt ihr dazu? Gibt es da eine Möglichkeit, wenn Verzeichnis als Objekt deklariert ist?
Ich verwende Late Binding und will das auch beibehalten.
LG, Franz

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dictionary als Variant deklarieren
13.10.2021 20:51:58
Nepumuk
Hallo Franz,
so geht's:

Sub WertSetzen(ByVal Verzeichnis As Object)
Gruß
Nepumuk
AW: Dictionary als Variant deklarieren
14.10.2021 21:19:12
SchubertFranzl
Ja, so funktioniert es. Warum, ist mir zwar nicht klar. Aber egal, mein Problem ist gelöst.
Danke Nepumuk. Hast mir wieder mal geholfen.
LG, Franz
...Weil 'For Each' für Objekte bestimmt ist ...
15.10.2021 03:59:12
Luc:-?
…und ein Variant auch ObjektReferenzen enthalten kann und nur deshalb ebenfalls zugelassen ist, Franz.
Morhn, Luc :-?
AW: ...Weil 'For Each' für Objekte bestimmt ist ...
15.10.2021 23:46:53
SchubertFranzl
Hallo Luc,
Mit meinem "Warum, ist mir zwar nicht klar." beziehe ich mich auf Nepumuks "ByVal".
Ich verstehe Deinen Beitrag nicht.
LG,
Franz
Hatte nachgelesen, deshalb 'verrutscht'; s.u.! owT
17.10.2021 15:01:57
Luc:-?
:-?
AW: Hatte nachgelesen, deshalb 'verrutscht'; s.u.! owT
20.10.2021 18:22:11
SchubertFranzl
Vielen Dank. LG, Franz
Anzeige
...Und ich bezog mich ...
17.10.2021 14:57:16
Luc:-?
…auf dein „Dictionary als Variant deklarieren“ und „dMarke muss wegen For Each wohl Variant sein…“ und damit auf Nepumuks As Object, Franz.
ByRef ist Standard für Objekte und kann deshalb auch weggelassen wdn. In manchen Fällen ist es aber nicht möglich mit der ObjektReferenz zu arbeiten, was ggf (in SubProzeduren) dazu führen kann, dass das referenzierte Objekt verändert wird, weshalb dann nur ByVal benutzt wdn darf. Normalerweise erscheint dann eine F-Meldung, ungefähr so: ByRef für angegebenen Parameter nicht möglich.
Luc :-?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige