Seite 1 von 1
Makro mehrfachen Start verhindern
Verfasst: Di, 06.01.2015 10:13
von clag
Hallo Kenner und Könner,
wie kann man sicherstellen das ein Makro nur einmal gestartet wird?
kann man das irgendwie direkt abfragen ob ein bzw welches Makro läuft?
Meine Idee wäre eine Globale Variable die abgefragt
und bei Makro Start auf "on" gesetzt wird.
Re: Makro mehrfachen Start verhindern
Verfasst: Di, 06.01.2015 13:16
von balu
Hallo clag
wie kann man sicherstellen das ein Makro nur einmal gestartet wird?
Gegenfrage. Wie schaffst Du es das ein Makro mehrfach gestartet wird? Das ist mir momentan etwas schleierhaft.
Nun gut, wie auch immer.
Meine Idee wäre eine Globale Variable die abgefragt
und bei Makro Start auf "on" gesetzt wird.
Globale Variable ist nicht schlecht. Das Makro welches nur einmal gestartet werden darf setzt den Status der Variablen auf TRUE oder 1.
Pseudocode. ACHTUNG NICHT GETESTET!!!
Code: Alles auswählen
Global FirstRun as Boolean
Sub NurEinmal
FirstRun = 1
End Sub
Gruß
balu
Re: Makro mehrfachen Start verhindern
Verfasst: Di, 06.01.2015 13:49
von Dreh-Gel
Code: Alles auswählen
Global FirstRun as Boolean
Sub NurEinmal
FirstRun = 1
End Sub
Also da fehlt die Abfrage, ob FirstRun 0 oder 1 ist.
Code: Alles auswählen
Global FirstRun as Boolean
Function WarNochNicht
if FirstRun = 0 Then
WarNochNicht = True
FirstRun = 1
else
WarNochNicht = False
EndIf
End Function
ok, die Abfrage fehlt nicht, man kann die globale Variable abfragen. Ich bleib trotzdem bei meinem Vorschlag.
Gruss DG
Re: Makro mehrfachen Start verhindern
Verfasst: Di, 06.01.2015 14:28
von clag
Hallo
und Danke für die schnellen Antworten
habe es jetzt auch in der Art gemacht, blieb mir ja auch nichts anderes übrig
Code: Alles auswählen
Global LoopShouldRun as Boolean
Sub StopLoop
LoopShouldRun = false
End Sub
Sub RefreshLoop
if LoopShouldRun = true then
msgbox "RefreshLoop Makro läuft bereits, dieser Start wird ignoriert"
exit sub
end if
LoopShouldRun = true
myDoc = thisComponent
..
..
if LoopShouldRun = false then
msgbox "RefreshLoop Makro wurde angehalten"
exit sub
was ich noch nicht verstehe warum funktioniert das nicht mit einer "Private" Variablen?
Re: Makro mehrfachen Start verhindern
Verfasst: Di, 06.01.2015 14:54
von Dreh-Gel
clag hat geschrieben:
was ich noch nicht verstehe warum funktioniert das nicht mit einer "Private" Variablen?
Hätt ich auch gedacht. Und mit Static?
In der Hilfe steht:
STATIC VarName As TYPNAME
Die Variable behält ihren Wert bis zum nächsten Einstieg in die FUNCTION oder SUB. Die Deklaration muss innerhalb einer SUB oder FUNCTION stehen.
Re: Makro mehrfachen Start verhindern
Verfasst: Di, 06.01.2015 15:22
von Karolus
Hallo
@Dreh Gel
Code: Alles auswählen
Global FirstRun as Boolean
Function WarNochNicht
WarNochNicht = FirstRun
End Function
Re: Makro mehrfachen Start verhindern
Verfasst: Di, 06.01.2015 15:29
von balu
Hallo
was ich noch nicht verstehe warum funktioniert das nicht mit einer "Private" Variablen?
Da Du mal wieder mit Infos extrem sparsam umgehst, kann ich nur eins sagen: Natürlich funktioniert das mit Private.
Und nun kommt das ganz dicke fette
ABER.
Aber auch nur dann, wenn die einzelnen Subs im ein und den gleichen Modul stehen. Denn Private ist auf das Modul begrenzt wo es aufgerufen wird.
Mensch clag, das müsstest Du doch schon mittlerweile Wissen das dies z.B. bei Dannenhöfer nachzulesen ist.
Gruß
balu
Re: Makro mehrfachen Start verhindern
Verfasst: Di, 06.01.2015 15:49
von clag
Hallo Balu,
da habe ich ungeprüft geplappert
denn jetzt funktioniert es auch mit "Privat"
Zuvor hatte ich erfolglos als "Private" deklariert und habe dann als Global deklariert womit es umgehend funktionierte.
Die Zusammenhänge habe ich nicht weiter erforscht, weil ich schon des öfteren an "Private"
gescheitert bin und immer hat es dann mit "Global" funktioniert?
Das liegt aber eher in meinem Basic Minimalwissen begründet.
Darum tauche ich hier ja öfters als Frager auf

Re: Makro mehrfachen Start verhindern
Verfasst: Di, 06.01.2015 17:19
von Dreh-Gel
Hallo Karolus
Code: Alles auswählen
Global FirstRun as Boolean
Function WarNochNicht
WarNochNicht = FirstRun
FirstRun = 1 ' oder im Macro Code auf 1 setzen :)
End Function
Gruss
DG
Re: Makro mehrfachen Start verhindern
Verfasst: Di, 06.01.2015 18:16
von Karolus
Hallo
Wenn du das Ding vorher als boolean deklarierst, dann weise dem Ding auch einen solchen zu, statt einer impliziten Konvertierung 1 →→ True
Re: Makro mehrfachen Start verhindern
Verfasst: Di, 06.01.2015 19:15
von Dreh-Gel
Karolus hat geschrieben:Wenn du das Ding vorher als boolean deklarierst, dann weise dem Ding auch einen solchen zu, statt einer impliziten Konvertierung 1 →→ True
Du hast ja recht, aber DEN Fehler hatte ich schon von balu übernommen.
Gruss
DG