Funktionsbutton Sortiern einfügen
Moderator: Moderatoren
Funktionsbutton Sortiern einfügen
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?
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?
Re: Funktionsbutton Sortiern einfügen
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:
Gruß
Stephan
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
Stephan
Re: Funktionsbutton Sortiern einfügen
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.
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.
Re: Funktionsbutton Sortiern einfügen
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?
Und we bekomme ich es hin, dass die Button-Funktion auch denjenigen zur Verfügung stehen, die die Datei auf einem anderen Rechner öffnen?
Re: Funktionsbutton Sortiern einfügen
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.Danke, scheint soweit zu funktionieren.
Aber wie stelle ich ein, das vor dem Sortieren auch die ganze Tabelle ausgewählt wird?
Wie soll man das beantworten ohne zu wissen welche Makrozuordnungen Du vorgenommen hast?Woran liegt das und wie kann man das verhindern?
GRuß
Stephan
Re: Funktionsbutton Sortiern einfügen
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 hat geschrieben: Fr, 03.03.2017 23:33
Wie soll man das beantworten ohne zu wissen welche Makrozuordnungen Du vorgenommen hast?
Re: Funktionsbutton Sortiern einfügen
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 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.
Gruß
Stephan
Re: Funktionsbutton Sortiern einfügen
Stephan hat geschrieben: Sa, 04.03.2017 22:56Ich 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 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 benutze Libreoffice.
Also muss ich es als .ods speichern? Würde es dann funktionieren (auch auf anderen Rechnern)?