von mbahlke » Fr, 22.01.2010 12:32
Ok,
Als Notlösung habe ich jetzt per Makro-Aufzeichnug die häufigsten Sortierungen aufgezeichnet, angepasst und diese jeweils einem Button zugeordnet.
Das funktioniert auch, ABER:
Die Sortierung wird zwar gemacht, auf dem Bildschirm ist aber immer noch die vorherige Sortierung zu sehen. Erst wenn man den sortierten Bereich aus dem sichbaren Bildschirmbereich raus- und wieder reinscrollt ist die Anzeige aktualisiert!? Gibt es hierfür eine Lösung?
Das Gleiche passiert übrigens bei Eingabe in eine Zelle. Die Zelle scheint leer zu sein, wenn man aber darauf klickt steht oben in der Zeile den eingebenen Text.
Auch hier: erst beim raus -und reinscrollen wird das Ganze in der Zelle sichtbar...
Hier das Sortierscript:
sub SortbySheetProtection()
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
Dim oSheet as Object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
oSheet = ThisComponent.CurrentController.ActiveSheet
With oSheet
.Unprotect "passwort"
rem .getCellRangeByName("A10:O409")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$A$9:$O$409"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
rem ----------------------------------------------------------------------
dim args2(8) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ByRows"
args2(0).Value = true
args2(1).Name = "HasHeader"
args2(1).Value = true
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 = 4
args2(6).Name = "Ascending1"
args2(6).Value = true
args2(7).Name = "Col2"
args2(7).Value = 2
args2(8).Name = "Ascending2"
args2(8).Value = true
dispatcher.executeDispatch(document, ".uno:DataSort", "", 0, args2())
.Protect "passwotr"
End With
args1(0).Name = "ToPoint"
args1(0).Value = "$B$10"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
end sub
Ok,
Als Notlösung habe ich jetzt per Makro-Aufzeichnug die häufigsten Sortierungen aufgezeichnet, angepasst und diese jeweils einem Button zugeordnet.
Das funktioniert auch, ABER:
Die Sortierung wird zwar gemacht, auf dem Bildschirm ist aber immer noch die vorherige Sortierung zu sehen. Erst wenn man den sortierten Bereich aus dem sichbaren Bildschirmbereich raus- und wieder reinscrollt ist die Anzeige aktualisiert!? Gibt es hierfür eine Lösung?
Das Gleiche passiert übrigens bei Eingabe in eine Zelle. Die Zelle scheint leer zu sein, wenn man aber darauf klickt steht oben in der Zeile den eingebenen Text.
Auch hier: erst beim raus -und reinscrollen wird das Ganze in der Zelle sichtbar...
Hier das Sortierscript:
sub SortbySheetProtection()
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
Dim oSheet as Object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
oSheet = ThisComponent.CurrentController.ActiveSheet
With oSheet
.Unprotect "passwort"
rem .getCellRangeByName("A10:O409")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$A$9:$O$409"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
rem ----------------------------------------------------------------------
dim args2(8) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ByRows"
args2(0).Value = true
args2(1).Name = "HasHeader"
args2(1).Value = true
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 = 4
args2(6).Name = "Ascending1"
args2(6).Value = true
args2(7).Name = "Col2"
args2(7).Value = 2
args2(8).Name = "Ascending2"
args2(8).Value = true
dispatcher.executeDispatch(document, ".uno:DataSort", "", 0, args2())
.Protect "passwotr"
End With
args1(0).Name = "ToPoint"
args1(0).Value = "$B$10"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
end sub