Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
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

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

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
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

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige