von Charly » Mo, 02.11.2009 11:09
Hallo!
Ich habe heute festgestellt, dass es beim Sortieren über das Menü eine Einstellung gibt, die das Sortieren von Formaten verhindert. Leider ist mir die entsprechende Einstellung in Starbasic nicht bekannt. Ich habe daher jetzt das Sortieren mit dem Makrorekorder aufgezeichnet und in dein Programm integriert.
Code: Alles auswählen
sub sortieren1()
dim count as integer
dim zero as integer
dim ende as integer
dim check as double
dim colour as long
Dim Dok as object
Dim Controller as Object
dim document as object
dim dispatcher as object
Dim Blatt as object
Dim Bereich as object
dim args1(6) as new com.sun.star.beans.PropertyValue
Dok = ThisComponent
Controller = Dok.GetCurrentController
Blatt = dok.sheets(0)
document = Controller.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
args1(0).Name = "ByRows"
args1(0).Value = true
args1(1).Name = "HasHeader"
args1(1).Value = false
args1(2).Name = "CaseSensitive"
args1(2).Value = false
args1(3).Name = "IncludeAttribs"
args1(3).Value = false
args1(4).Name = "UserDefIndex"
args1(4).Value = 0
args1(5).Name = "Col1"
args1(5).Value = 6
args1(6).Name = "Ascending1"
args1(6).Value = false
' ----------------------------------------------------------------------------------------
' Grundvariablen beschreiben
' ----------------------------------------------------------------------------------------
count = 1
check = 1
colour = 16777062
' ----------------------------------------------------------------------------------------
' ermitteln der letzten Zeile
' ----------------------------------------------------------------------------------------
do while check >0
count = count + 1
check = Blatt.getCellByPosition(0,count).value
loop
ende = count - 1
' ----------------------------------------------------------------------------------------
' Tabelle nach vorhandener Menge sortieren
' ----------------------------------------------------------------------------------------
Bereich = Blatt.getcellrangebyposition(0,2,9,ende)
Controller.select(Bereich)
dispatcher.executeDispatch(document, ".uno:DataSort", "", 0, args1())
' ----------------------------------------------------------------------------------------
' Erste Zeile ohne Restbestand suchen
' ----------------------------------------------------------------------------------------
check = 1
count = 1
do while check >0
count = count + 1
check = thisComponent.sheets(0).getCellByPosition(5,count).value
loop
zero = count
' ----------------------------------------------------------------------------------------
' Vorhandene Lebensmittel nach Artikelnummer sortieren
' ----------------------------------------------------------------------------------------
Bereich= Blatt.getcellrangebyposition(0,2,9,zero)
Controller.select(Bereich)
args1(5).Value = 1
dispatcher.executeDispatch(document, ".uno:DataSort", "", 0, args1())
' ----------------------------------------------------------------------------------------
' nicht vorhandene Lebensmittel nach Artikelnummer sortieren und farblich hinterlegen
' ----------------------------------------------------------------------------------------
Bereich = Blatt.getcellrangebyposition(0,zero+1,9,ende)
Controller.select(Bereich)
dispatcher.executeDispatch(document, ".uno:DataSort", "", 0, args1())
Bereich.cellbackcolor = colour
end sub
Gruß
Charly
Hallo!
Ich habe heute festgestellt, dass es beim Sortieren über das Menü eine Einstellung gibt, die das Sortieren von Formaten verhindert. Leider ist mir die entsprechende Einstellung in Starbasic nicht bekannt. Ich habe daher jetzt das Sortieren mit dem Makrorekorder aufgezeichnet und in dein Programm integriert.
[code]
sub sortieren1()
dim count as integer
dim zero as integer
dim ende as integer
dim check as double
dim colour as long
Dim Dok as object
Dim Controller as Object
dim document as object
dim dispatcher as object
Dim Blatt as object
Dim Bereich as object
dim args1(6) as new com.sun.star.beans.PropertyValue
Dok = ThisComponent
Controller = Dok.GetCurrentController
Blatt = dok.sheets(0)
document = Controller.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
args1(0).Name = "ByRows"
args1(0).Value = true
args1(1).Name = "HasHeader"
args1(1).Value = false
args1(2).Name = "CaseSensitive"
args1(2).Value = false
args1(3).Name = "IncludeAttribs"
args1(3).Value = false
args1(4).Name = "UserDefIndex"
args1(4).Value = 0
args1(5).Name = "Col1"
args1(5).Value = 6
args1(6).Name = "Ascending1"
args1(6).Value = false
' ----------------------------------------------------------------------------------------
' Grundvariablen beschreiben
' ----------------------------------------------------------------------------------------
count = 1
check = 1
colour = 16777062
' ----------------------------------------------------------------------------------------
' ermitteln der letzten Zeile
' ----------------------------------------------------------------------------------------
do while check >0
count = count + 1
check = Blatt.getCellByPosition(0,count).value
loop
ende = count - 1
' ----------------------------------------------------------------------------------------
' Tabelle nach vorhandener Menge sortieren
' ----------------------------------------------------------------------------------------
Bereich = Blatt.getcellrangebyposition(0,2,9,ende)
Controller.select(Bereich)
dispatcher.executeDispatch(document, ".uno:DataSort", "", 0, args1())
' ----------------------------------------------------------------------------------------
' Erste Zeile ohne Restbestand suchen
' ----------------------------------------------------------------------------------------
check = 1
count = 1
do while check >0
count = count + 1
check = thisComponent.sheets(0).getCellByPosition(5,count).value
loop
zero = count
' ----------------------------------------------------------------------------------------
' Vorhandene Lebensmittel nach Artikelnummer sortieren
' ----------------------------------------------------------------------------------------
Bereich= Blatt.getcellrangebyposition(0,2,9,zero)
Controller.select(Bereich)
args1(5).Value = 1
dispatcher.executeDispatch(document, ".uno:DataSort", "", 0, args1())
' ----------------------------------------------------------------------------------------
' nicht vorhandene Lebensmittel nach Artikelnummer sortieren und farblich hinterlegen
' ----------------------------------------------------------------------------------------
Bereich = Blatt.getcellrangebyposition(0,zero+1,9,ende)
Controller.select(Bereich)
dispatcher.executeDispatch(document, ".uno:DataSort", "", 0, args1())
Bereich.cellbackcolor = colour
end sub
[/code]
Gruß
Charly