CALC: Makro bei Anwahl eines Sheets aktivieren?

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

desmond
*
Beiträge: 16
Registriert: Mo, 05.09.2011 10:14

CALC: Makro bei Anwahl eines Sheets aktivieren?

Beitrag von desmond »

Guten Tag,

ich habe ein Makro erzeugt, das mir alle Daten eines Tabellenblatts sortiert. Habe das Makro bisher per Button ausgeführt und es funktioniert..
Jetzt möchte ich das ganze noch dahingehend verbessern, dass die Daten sofort bei Aufruf des Tabellenblatts sortiert werden, also das Makro entsprechend ausgelöst wird, sobald man auf das Tabellenblatt geht.

Habe es über Extras--> Anpassen --> Ereignisse probiert, dort aber mit den meiner Meinung nach logischsten Aktionen (z.B. Dokument aufrufen) keinen erfolg gehabt.

Gibt es eine andere Möglichkeit?

Vielen Dank!

Das Makro:

Code: Alles auswählen

Sub sortieren
	Dim oSheetDSC,oDSCRange  As Object
  Dim aSortFields(0) As New com.sun.star.util.SortField
  Dim aSortDesc(0) As New com.sun.star.beans.PropertyValue

  'set your sheet name
  oSheetDSC = ThisComponent.Sheets.getByName("Ausgabe")

  'set your range address
  oDSCRange = oSheetDSC.getCellRangeByName("B2:S140")
  ThisComponent.getCurrentController.select(oDSCRange)

  aSortFields(0).Field = 0
  aSortFields(0).SortAscending = FALSE

  aSortDesc(0).Name = "SortFields"
  aSortDesc(0).Value = aSortFields()
  oDSCRange.Sort(aSortDesc())
End Sub

Private Sub Schaltflaeche 1_Click()
		Worksheets("Ausgabe").Select
End Sub


Moderation,4: verschoben in BASIC-Unterbereich, wo alle Makro-Fragen hin gehören; Betreff angepasst; CODE tags gesetzt
F3K Total
********
Beiträge: 3723
Registriert: Mo, 28.02.2011 17:49

Re: Makro bei Anwahl eines Sheets aktivieren?

Beitrag von F3K Total »

Jupp, gibt es seit OOo 3.3, Rechtsklick auf den Tabellenreiter:
Tabellenereignisse.png
Tabellenereignisse.png (14.71 KiB) 734 mal betrachtet
... und hier das Makro an das Ereignis "Dokument aktivieren" hängen.
Folgendes Makro gibt dann z.B. den Namen des gerade angeklicken Tabellenblattes zurück:

Code: Alles auswählen

Sub Main
msgbox thisComponent.currentcontroller.ActiveSheet.name
End Sub
Gruß R
Antworten