Makro mehrfachen Start verhindern
Moderator: Moderatoren
Makro mehrfachen Start verhindern
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.
			
			
									
						
							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.
LG
clag
nutzt: Win 10/ AOO 4.1.15 / Firefox
			
						clag
nutzt: Win 10/ AOO 4.1.15 / Firefox
Re: Makro mehrfachen Start verhindern
Hallo clag
Nun gut, wie auch immer.
Pseudocode. ACHTUNG NICHT GETESTET!!!
Gruß
balu
			
			
									
						
							Gegenfrage. Wie schaffst Du es das ein Makro mehrfach gestartet wird? Das ist mir momentan etwas schleierhaft.wie kann man sicherstellen das ein Makro nur einmal gestartet wird?
Nun gut, wie auch immer.
Globale Variable ist nicht schlecht. Das Makro welches nur einmal gestartet werden darf setzt den Status der Variablen auf TRUE oder 1.Meine Idee wäre eine Globale Variable die abgefragt
und bei Makro Start auf "on" gesetzt wird.
Pseudocode. ACHTUNG NICHT GETESTET!!!
Code: Alles auswählen
Global FirstRun as Boolean
	Sub NurEinmal
		FirstRun = 1
	End Sub
Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass. 
wehr rächtschraipfähler findet khan si behalden
			
						wehr rächtschraipfähler findet khan si behalden
Re: Makro mehrfachen Start verhindern
Code: Alles auswählen
Global FirstRun as Boolean
	Sub NurEinmal
		FirstRun = 1
	End Sub
Code: Alles auswählen
Global FirstRun as Boolean
Function WarNochNicht
	if FirstRun = 0 Then 
		WarNochNicht = True
		FirstRun = 1
	else
		WarNochNicht = False
	EndIf
End Function
Gruss DG
Win7, AOO 4.1.1
			
						Re: Makro mehrfachen Start verhindern
Hallo 
und Danke für die schnellen Antworten
habe es jetzt auch in der Art gemacht, blieb mir ja auch nichts anderes übrig
was ich noch nicht verstehe warum funktioniert das nicht mit einer "Private" Variablen?
			
			
									
						
							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?
LG
clag
nutzt: Win 10/ AOO 4.1.15 / Firefox
			
						clag
nutzt: Win 10/ AOO 4.1.15 / Firefox
Re: Makro mehrfachen Start verhindern
Hätt ich auch gedacht. Und mit Static?clag hat geschrieben: was ich noch nicht verstehe warum funktioniert das nicht mit einer "Private" Variablen?
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.
Win7, AOO 4.1.1
			
						Re: Makro mehrfachen Start verhindern
Hallo
@Dreh Gel
			
			
									
						
							@Dreh Gel
Code: Alles auswählen
Global FirstRun as Boolean
Function WarNochNicht
     WarNochNicht = FirstRun
End Function  LO25.2… debian 13( trixie ) auf Raspberry5 8GB (ARM64)
LO25.8… flatpak debian 13( trixie ) auf Raspberry5 8GB (ARM64)
			
						LO25.8… flatpak debian 13( trixie ) auf Raspberry5 8GB (ARM64)
Re: Makro mehrfachen Start verhindern
Hallo 
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
			
			
									
						
							Da Du mal wieder mit Infos extrem sparsam umgehst, kann ich nur eins sagen: Natürlich funktioniert das mit Private.was ich noch nicht verstehe warum funktioniert das nicht mit einer "Private" Variablen?
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
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass. 
wehr rächtschraipfähler findet khan si behalden
			
						wehr rächtschraipfähler findet khan si behalden
Re: Makro mehrfachen Start verhindern
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
			
			
									
						
							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
LG
clag
nutzt: Win 10/ AOO 4.1.15 / Firefox
			
						clag
nutzt: Win 10/ AOO 4.1.15 / Firefox
Re: Makro mehrfachen Start verhindern
Hallo Karolus
Gruss
DG
			
			
									
						
							Code: Alles auswählen
Global FirstRun as Boolean
Function WarNochNicht
     WarNochNicht = FirstRun
     FirstRun = 1    ' oder im Macro Code auf 1 setzen :)
End Function DG
Win7, AOO 4.1.1
			
						Re: Makro mehrfachen Start verhindern
Hallo
Wenn du das Ding vorher als boolean deklarierst, dann weise dem Ding auch einen solchen zu, statt einer impliziten Konvertierung 1 →→ True
			
			
									
						
							Wenn du das Ding vorher als boolean deklarierst, dann weise dem Ding auch einen solchen zu, statt einer impliziten Konvertierung 1 →→ True
 LO25.2… debian 13( trixie ) auf Raspberry5 8GB (ARM64)
LO25.8… flatpak debian 13( trixie ) auf Raspberry5 8GB (ARM64)
			
						LO25.8… flatpak debian 13( trixie ) auf Raspberry5 8GB (ARM64)
Re: Makro mehrfachen Start verhindern
Du hast ja recht, aber DEN Fehler hatte ich schon von balu übernommen.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
Gruss
DG
Win7, AOO 4.1.1