Seite 1 von 1
Makro auslösen beim verlassen einer Tabelle
Verfasst: Mo, 20.08.2012 11:02
von delta9
Hallo, wie kann ich beim Verlassen einer calc Tabelle ein Makro auslösen?
Also nicht beim Schließen des Dokuments, sondern wenn der Nutzel z.B. von Tabelle3 zur Tabelle1 wechselt.
Stefan
Re: Makro auslösen beim verlassen einer Tabelle
Verfasst: Mo, 20.08.2012 11:08
von Stephan
Hallo, wie kann ich beim Verlassen einer calc Tabelle ein Makro auslösen?
Das kommt auf die OOo-version an.
In neueren Versionen z.B. über das Kontextmenü der Tabellenregister dort "Tabellenereignisse" und dort "Auswahl geändert".
Gruß
Stephan
Re: Makro auslösen beim verlassen einer Tabelle
Verfasst: Mo, 20.08.2012 11:34
von delta9
Hallo Stephan,
OO 2.4 scheint demnach nicht zu den "neueren Versionen" zu gehören?
Aber vielleicht kann mir jemand, einen konkreten Tipp zu einem Listener geben kann, falls es keine andere Lösung gibt?
Stefan
Re: Makro auslösen beim verlassen einer Tabelle
Verfasst: Mo, 20.08.2012 11:55
von Stephan
OO 2.4 scheint demnach nicht zu den "neueren Versionen" zu gehören?
nein (2.4 erschien im März 2008)
Wenn ich von 'neueren Versionen' spreche dann vorrangig weil ich garnicht genau weiß auf welche Versionen das zutrifft, auf jeden Fall auf OO 3.3.0 und AOO 3.4.0
Aber vielleicht kann mir jemand, einen konkreten Tipp zu einem Listener geben kann, falls es keine andere Lösung gibt?
z.B. wäre folgender Listener geeignet:
http://www.openoffice.org/api/docs/comm ... eetChanged
Gruß
Stephan
Re: Makro auslösen beim verlassen einer Tabelle
Verfasst: Mo, 20.08.2012 13:39
von delta9
Danke, aufgrund des Stichwortes habe ich nun folgenden Listener mir zusammengeklaut, ohne richtig zu verstehen wie er funktioniert. Aber er funktioniert! Jedoch ich möchte immer ein Makro, wenn ich von einer bestimmten Tabelle WEGGEHE.
Das könnte ich sicher mit irgendwelchen Merker-Variablen erkennen, aber vielleicht gibt es noch eine elegantere Methode,
Z.B. ein Listener der nicht reagiert, wenn man auf dem neuen Blatt angekommen ist, sondern wenn man vom alten geht (und dann dessen Name unmittelbar abfragen kann?
Code: Alles auswählen
Global oListener As Variant
Global oView As Variant
global oListener
Sub add_Listener
Dim oDoc
Dim oVIEW
' get the model
oDoc = thisComponent
' get the controller
oView = oDoc.getCurrentController()
' create the listener
oListener = CreateUnoListener ("XList_", "com.sun.star.sheet.XActivationEventListener")
' add the listener to controller
oView.addActivationEventListener (oListener)
' msgBox "XActivationEventListener added"
End Sub
Sub remove_Listener
' remove the listener from controller
oView.removeActivationEventListener (oListener)
msgBox "XActivationEventListener removed"
End Sub
'______________________________________________________
' Interface com.sun.star.sheet.XActivationEventListener
'______________________________________________________
' method activeSpreadsheetChanged()
Sub XList_activeSpreadsheetChanged ( oEvento )
dim oSheet
dim sSheetName
' get the event object
oSheet = oEvento.ActiveSheet
sSheetName = oSheet.getName()
if sSheetName = NameWirtschaftsblatt then
msgBox (sSheetName, 176, "Active Sheet")
end if
End Sub
'_________________________________________________________________
' method disposing() of interface com.sun.star.lang.XEventListener
' !! It isn't necessary !!
Sub XList_disposing ( oEvt )
' nothing to do
End Sub
Re: Makro auslösen beim verlassen einer Tabelle
Verfasst: Mo, 20.08.2012 13:44
von delta9
Sorry, blöde Frage, das geht mit globalen Variablen ja ganz einfach!