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