169 Aufrufe
Gefragt in Tabellenkalkulation von vernichter Mitglied (261 Punkte)

Hallo zusammen,

Modul1:

Public LastWBName_1 As String

Modul2:

LastWBName_1 = Workbooks(DateiName).Worksheets(H_Sheet).Cells(62, 2).Value

am Ende der Sub

Application.Run "Mail_Daten_Aufbereiten_1", LastWBName_1

Modul3:

Sub Mail_Daten_Aufbereiten_1(LastWBName_1)

oder

Sub Mail_Daten_Aufbereiten_1(ByVal LastWBName_1 As String)

Der Grund warum ich diese Frage stelle ist folgender. Ich möchte gerne meine Makros ein wenig aufräumen und verkürzen.

Zum Beispiel stand in den Makros wo ich es benötige das hier drin.

Dim LastWBName_1 As String

LastWBName_1 = Workbooks(DateiName).Worksheets(H_Sheet).Cells(62, 2).Value

um das hier nicht ständig in alle Makros schreiben zu müssen

Dim LastWBName_1 As String

habe ich mich hierfür entschieden, was ich dann eben nur einmal schreiben muss

Public LastWBName_1 As String

Ich finde das spart schon einiges an Schreibarbeit und sieht wesentlich aufgeräumter aus. Welche schreibweise ist denn in Modul 3 die richtige?

Mit freundlichen Grüßen

2 Antworten

+1 Punkt
Beantwortet von beverly_ Experte (3.3k Punkte)
ausgewählt von vernichter
 
Beste Antwort
Hi,

theoretisch sind beide Schreibweisen "richtig" weil keine einen Fehler auslöst und auch das richtige Ergebnis bringt. Aber im ersten Fall ist die Variable LastWBName_1 nicht dimensioniert, weshalb sie von Excel als Variant angenommen wird. Im zweiten Fall dagegen ist die Variable als String dimensioniert - dadurch wird weniger Speicher benötigt. Weiterhin wird durch den Parameter ByVal (By Value) festgelegt, dass die Variable nur als Wert übergeben wird und nicht die Variable als solche - schau dazu z.B. hier: https://activevb.de/rubriken/faq/faq0131.html

Bis später, Karin
0 Punkte
Beantwortet von vernichter Mitglied (261 Punkte)
Hallo Karin,

recht vielen Dank. :-)

Mit freundlichen Grüßen
...