Excel VBA: Gloable Variable vermeiden

Hallo
ich habe ein Makro geschrieben, dass aus mehreren Subs besteht. Zwei dieser Subs können aufgerufen werden.
Jetzt will ich, dass wenn das erste Mal eine der Subs aufgerufen wird eine Nag-Screen kommt (mit GPL), die nächsten Male nicht.
Ich habe das bisher über eine Globale Variable gelöst.

Global bNagScreen As Boolean
Sub NagScreen()
 msgbox "text"
 bNagScreen as true
end sub
sub tt1()
if not bNagScreen then call NagScreen
....
end sub
sub tt2()
if not bNagScreen then call NagScreen
....
end sub

Das funktioniert soweit gut!
Gibt es einen besseren Weg?

Danke fürs Lesen
Winter

Hi,

wenn du etwas gegen globale Variablen hast, könntest du alternativ den aktuellen Status als Parameter an die subs-Übergeben.

Du müsstest dann aber den aktuellen Status immer mit „herumschleppen“ bzw. in der Hauptroutine verwalten.

Ich würde es so lassen, wie es ist.

Grüße

powerblue

Hallo Winterritter,

du könntest es statt mit einer globalen mit einer Static Variablen lösen:

Sub NagScreen()
 Static bNagScreen As Boolean

 If Not bNagScreen Then
 MsgBox "text"
 bNagScreen = True
 End If
End Sub

Sub tt1()
 Call NagScreen
End Sub

Sub tt2()
 Call NagScreen
End Sub

Wird aber auch nicht viel schöner.

Gruß, Andreas

Halo Andreas, hallo Power_Blue,
danke für Eure Antworten.

Nachdem ich das Programm 5x umgeschrieben habe habe ich die Sub NagScreen als eigene Sub und nicht als Teil der beiden anderen Subs. Dann funktioniert natürlich auch eine Static.
Vielleicht das nächste Mal erst nachdenke und dann fragen stellen.
Danke Euch für Eure Zeit und Antworten.
Winter