Funktionsbutton Sortiern einfügen

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

actaion
Beiträge: 5
Registriert: Do, 02.03.2017 02:17

Funktionsbutton Sortiern einfügen

Beitrag von actaion »

Hallo,
es geht darum, dass ich bei einer größeren Datentabelle gerne einen Knopf über einige Spalten platzieren würde, wo man wenn da draufklickt, automatisch die Tabelle nach dieser Spalte sortiert wird.
Damit man nicht immer umständlich erst eine Markierung über die ganze Tabelle aufziehen muss und dann noch die Spalte markieren etc.
Geht sowas?
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Funktionsbutton Sortiern einfügen

Beitrag von Stephan »

Du kannst für jede Spalte ein Makro aufzeichnen und der Schaltfläche für die Spalte zuordnen. Für Spalte A könnte DEin aufgezeichnetes Makro z.B. so aussehen:

Code: Alles auswählen

sub Sortieren_nach_A
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$A$1"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(6) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ByRows"
args2(0).Value = true
args2(1).Name = "HasHeader"
args2(1).Value = false
args2(2).Name = "CaseSensitive"
args2(2).Value = false
args2(3).Name = "IncludeAttribs"
args2(3).Value = true
args2(4).Name = "UserDefIndex"
args2(4).Value = 0
args2(5).Name = "Col1"
args2(5).Value = 1
args2(6).Name = "Ascending1"
args2(6).Value = true

dispatcher.executeDispatch(document, ".uno:DataSort", "", 0, args2())


end sub
Gruß
Stephan
actaion
Beiträge: 5
Registriert: Do, 02.03.2017 02:17

Re: Funktionsbutton Sortiern einfügen

Beitrag von actaion »

Danke, scheint soweit zu funktionieren.
Aber wie stelle ich ein, das vor dem Sortieren auch die ganze Tabelle ausgewählt wird?
Hatte für das Makro zunächst von Hand markiert, aber wenn die Tabelle später wächst, könnte es nicht mehr reichen. Wenn ich aber "alles auswählen" nutze, wird die Überschriftenspalte mit einsortiert, was natürlich nicht soll. Wenn ich manuell auswähle incl Überschriftenzeile aber nicht, dann erscheinen die Überschriften als Sortierkriterium.
actaion
Beiträge: 5
Registriert: Do, 02.03.2017 02:17

Re: Funktionsbutton Sortiern einfügen

Beitrag von actaion »

es ist noch ien Problem aufgetaucht. Wenn ich das Programm schließe und später wieder öffnen, sind die Makro-Zuordnungen zu den Schaltflächen alle wieder weg. Woran liegt das und wie kann man das verhindern?

Und we bekomme ich es hin, dass die Button-Funktion auch denjenigen zur Verfügung stehen, die die Datei auf einem anderen Rechner öffnen?
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Funktionsbutton Sortiern einfügen

Beitrag von Stephan »

Danke, scheint soweit zu funktionieren.
Aber wie stelle ich ein, das vor dem Sortieren auch die ganze Tabelle ausgewählt wird?
Das geschieht automatisch (egal ob aufgezeichnetes Makro oder händische Bedienung) wenn Du irgendeine Zelle des zu sortierenden Bereiches auswählst, in meinem Beispiel ist das A1.
Woran liegt das und wie kann man das verhindern?
Wie soll man das beantworten ohne zu wissen welche Makrozuordnungen Du vorgenommen hast?


GRuß
Stephan
actaion
Beiträge: 5
Registriert: Do, 02.03.2017 02:17

Re: Funktionsbutton Sortiern einfügen

Beitrag von actaion »

Stephan hat geschrieben: Fr, 03.03.2017 23:33
Wie soll man das beantworten ohne zu wissen welche Makrozuordnungen Du vorgenommen hast?
Ich habe zuerst eien Schaltfläche eingfügt, dann ein Makro aufgezeichnet, mit dem ich die Tabelle nach einer Spalte sortiere. Dann habe ich der Schaltfläche als Ereignis (Aktion ausführen) das Makro zugeordnet. Danach hat es funktioniert. Wenn ich das Programm aber schließe und dann neu öffen, ist die Zuordnung des Makros futsch. Der Schaltfläche ist keine Funktion mehr zugeordnet.
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Funktionsbutton Sortiern einfügen

Beitrag von Stephan »

Ich habe zuerst eien Schaltfläche eingfügt, dann ein Makro aufgezeichnet, mit dem ich die Tabelle nach einer Spalte sortiere. Dann habe ich der Schaltfläche als Ereignis (Aktion ausführen) das Makro zugeordnet. Danach hat es funktioniert. Wenn ich das Programm aber schließe und dann neu öffen, ist die Zuordnung des Makros futsch. Der Schaltfläche ist keine Funktion mehr zugeordnet.
Ich habe nicht die geringste Ahnung, denn z.B. würde ja bei Speichern als xls nicht nur die Makrozuordnung verschwinden, sondern das Makro ansich würde überhaupt nicht in der Datei gespeichert werden können, weil OO in Fremdformaten keine Makros speichert.


Gruß
Stephan
actaion
Beiträge: 5
Registriert: Do, 02.03.2017 02:17

Re: Funktionsbutton Sortiern einfügen

Beitrag von actaion »

Stephan hat geschrieben: Sa, 04.03.2017 22:56
Ich habe zuerst eien Schaltfläche eingfügt, dann ein Makro aufgezeichnet, mit dem ich die Tabelle nach einer Spalte sortiere. Dann habe ich der Schaltfläche als Ereignis (Aktion ausführen) das Makro zugeordnet. Danach hat es funktioniert. Wenn ich das Programm aber schließe und dann neu öffen, ist die Zuordnung des Makros futsch. Der Schaltfläche ist keine Funktion mehr zugeordnet.
Ich habe nicht die geringste Ahnung, denn z.B. würde ja bei Speichern als xls nicht nur die Makrozuordnung verschwinden, sondern das Makro ansich würde überhaupt nicht in der Datei gespeichert werden können, weil OO in Fremdformaten keine Makros speichert.

Ich benutze Libreoffice.

Also muss ich es als .ods speichern? Würde es dann funktionieren (auch auf anderen Rechnern)?
Antworten