Makro mehrfachen Start verhindern

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Makro mehrfachen Start verhindern

Re: Makro mehrfachen Start verhindern

von Dreh-Gel » Di, 06.01.2015 19:15

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

Re: Makro mehrfachen Start verhindern

von Karolus » Di, 06.01.2015 18:16

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

von Dreh-Gel » Di, 06.01.2015 17:19

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

von clag » Di, 06.01.2015 15:49

Hallo Balu,

da habe ich ungeprüft geplappert
denn jetzt funktioniert es auch mit "Privat" :oops:

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 :lol:

Re: Makro mehrfachen Start verhindern

von balu » Di, 06.01.2015 15:29

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

von Karolus » Di, 06.01.2015 15:22

Hallo

@Dreh Gel

Code: Alles auswählen

Global FirstRun as Boolean

Function WarNochNicht
     WarNochNicht = FirstRun
End Function 

Re: Makro mehrfachen Start verhindern

von Dreh-Gel » Di, 06.01.2015 14:54

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

von clag » Di, 06.01.2015 14:28

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

von Dreh-Gel » Di, 06.01.2015 13:49

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

von balu » Di, 06.01.2015 13:16

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

Makro mehrfachen Start verhindern

von clag » Di, 06.01.2015 10:13

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.

Nach oben