Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Objekt im With Objekt aufrufen

Forumthread: Objekt im With Objekt aufrufen

Objekt im With Objekt aufrufen
13.10.2021 20:54:16
SchubertFranzl
Hallo
im folgenden Makro würde ich gerne in der Zeile, die mit "folgende Zeile" markiert ist, nicht dAuto schreiben, sondern das With-Objekt selbst nehmen, ohne es namentlich erwähnen zu müssen, so wie es in den Zeilen davor mit dem Punkt vor dem Add gemacht ist.

Sub TestFarbe()
Dim dAuto   As Object
Set dAuto = CreateObject("Scripting.Dictionary")
With dAuto
.Add "Mercedes", "rot"
.Add "Audi", "blau"
'folgende Zeile
Call FarbeSetzen(dAuto, "BMW", "schwarz")
End With
Debug.Print "Farbe BMW: ", dAuto("BMW")
End Sub

Sub FarbeSetzen(Verzeichnis As Object, Marke As String, Farbe As String)
Verzeichnis(Marke) = Farbe
End Sub
Geht das?
LG,
Franz
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Objekt im With Objekt aufrufen
13.10.2021 22:19:58
Yal
Hallo Franz,
der With ist eigentlich gedacht, um "lästige" wiederholung zu vermeiden:
übel:

Set myRng = Workbooks("aksjdhkfgg").Range(Workbooks("aksjdhkfgg").Range("A1"), Workbooks("aksjdhkfgg").Range("A9999").End(xlUp))
besser:

With Workbooks("aksjdhkfgg")
Set myRng = .Range(.Range("A1"), .Range("A9999").End(xlUp))
End With
In Fall einer Objekt-Variable, die sowieso mit Set oder als Dim .. as New ... vorliegt, macht es wenig Sinn mit dem With zu arbeiten.
Beim Aufruf auf "Farbe_setzen" kommst Du aber nicht Drum den Dictionary anzugeben, da diese nicht als globale Variable deklariert ist.

Sub TestFarbe()
'unter "early binding" auf Microsoft Scripting Runtime
' Extras, Verweise..., "Microsoft Scripting Runtime" anhacken
Dim dAuto As New Scripting.Dictionary
dAuto.Add "Mercedes", "rot"
dAuto.Add "Audi", "blau"
FarbeSetzen dAuto, "BMW", "schwarz"
Debug.Print "Farbe BMW: ", dAuto("BMW")
End Sub
Sub FarbeSetzen(ByRef Verzeichnis As Object, Marke As String, Farbe As String)
Verzeichnis(Marke) = Farbe
End Sub
(Tipp: den Early Binding gibt Dir Zugang zu dem "intellisense" (Strg + Leertaste): alle Eigenschaft und Methode eines Objekts in einem Dropdown.)
VG
Yal
Anzeige
AW: Objekt im With Objekt aufrufen
14.10.2021 21:23:06
SchubertFranzl
Hallo Yal,
"In Fall einer Objekt-Variable, die sowieso mit Set oder als Dim .. as New ... vorliegt, macht es wenig Sinn mit dem With zu arbeiten."
Warum? Es dient der Übersichtlichkeit, auch wenn es ein Dictionary ist.
Danke jedenfalls für Deine Antwort. Hat mir geholfen.
LG, Franz
Anzeige
AW: Objekt im With Objekt aufrufen
15.10.2021 16:28:13
Yal
Hallo Franz,
ich gebe Dir Recht: es dient die Übersicht.
Nun ist die Frage, wenn ich schon eine Variable habe, diese Variable ein kurzen Name hat und dann noch nur zweimal verwendet wird (wobei hier nur dem gegebenen Beispiel geschuldet), ist es lesbarer nach:
Version 1:

With dAuto
.Add "Mercedes", "rot"
.Add "Audi", "blau"
Call FarbeSetzen(dAuto, "BMW", "schwarz")
End With
oder Version 2?:

dAuto.Add "Mercedes", "rot"
dAuto.Add "Audi", "blau"
Call FarbeSetzen(dAuto, "BMW", "schwarz")
Ich würde sagen, Geschmacksache.
In dem Aufruf des Subs "FarbeSetzen" kommst Du nicht drum die Variable dAuto zu verwenden. Genau gesehen sollte es daher in Version 1 ausserhalb des With/End With stehen. Hier auch Lesbarkeit: Blöcke so schnell wie Möglich wieder schliessen.
"Call" ist übrigens ein Überbleibsel von früheren Basic-Sprachen und ist nicht mehr benötigt.
Dir ein schönes Wochenende
VG
Yal
Anzeige
AW: Objekt im With Objekt aufrufen
15.10.2021 23:36:15
SchubertFranzl
Das mit dem Call-Überbleibsel ist mir bekannt.
Dennoch: Auch hier finde ich es so übersichtlicher, bzw. für mich leichter lesbar.
Danke. Alles Gute.
LG, Franz
;

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