Seite 1 von 1

ein endlos Makro beenden?

Verfasst: Do, 13.01.2011 08:40
von clag
Hallo Kenner und Könner,

nachdem ein automatischer Start eines endlos Makro beim laden der Datei klappt,
stellt sich für mich nun die Frage wie kann man das "Endlos_Makro" per Befehl stoppen?

Uns zwar weil sich beim speichern/beenden dieser Datei Probleme ergeben, wenn das Makro im 1 Sekundentakt läuft,
denn nach dem Speichern wird gleich wieder ein Wert geschrieben und die Datei kann nur über "Änderung verwerfen" beendet werden.
Das aber führt hier zu einem Problem, OOo möchte danach eine nicht existierende "Datei wiederherstellen" .....

Nun würde ich gern mit der Aktion "Datei beenden" das auto-gestartete "Endlos_Makro" unterbrechen, so dezent wie möglich.

da wäre erstmal das manuelle "ctrl+shift+Q" aber das ist doch eher wenig dezent :lol:

vieleicht eine globale Variable die bei Start auf "run" gesetzt und vom "Endlos_Makro" abgefragt wird (macht das Makro aber länger)
und beim beenden der Datei wird durch ein weiteres Makro diese Variable auf "stop" gesetzt!?

oder was könnte man sonst noch anstellen?

Re: ein endlos Makro beenden?

Verfasst: Do, 13.01.2011 10:08
von Karolus
Hallo
Bau in der "Endlosschleife" eine Abfrage auf einen Wert ein ...
Karo

Re: ein endlos Makro beenden?

Verfasst: Do, 13.01.2011 10:41
von clag
Hallo Karolus

danke für den Tipp, ist aber noch nicht ganz das an was ich gedacht habe,
da der "HilfsWert" Gefahr läuft manuell verändert zu werden und das Makro somit möglicherweise versehentlich unbemerkt gestoppt wird.

Re: ein endlos Makro beenden?

Verfasst: Fr, 14.01.2011 23:24
von clag
Hallo Leutz,

habe es nun so gelöst

Code: Alles auswählen

REM  *****  BASIC  *****
public makrocheck as integer

sub refresh 'mit fixen refresh Wert
	dim tickDoc as object
	dim tickSheet as object
	makrocheck = 13
	tickDoc = thisComponent
	tickSheet = tickDoc.Sheets().getByName("Tabelle1")
	mytimeCell=ticksheet.getCellRangeByName("$B$1")
	mytimeCell.string = TIME
endless:
	if makrocheck = 1 then exit sub
	wait 1000 ' 1000 = 1 Sekunde
	mytimeCell.string = TIME
goto endless
End Sub


sub stop_refresh
	makrocheck = 1
End Sub

wobei "refresh" mit dem Ereignis "Dokument öffnen"
und "stop refresh" mit "Dokument schließen" verknüpft sind
das funktioniert jetzt ganz gut :D