Ich habs...!
Tatsächlich hat der Code mit der extra Schaltfläche funktioniert. Ich musste ihn ein wenig anpassen, weil die erste Zeile nicht mitsortiert wurde.
Nach ein wenig grübeln habe ich den Code so verändert, dass er mit Drücken der Taste "Eintragen" funktioniert - also ohne extra Taste. Und läuft!
Ein riesiges Dankeschön!
Der funktionierende Code sieht jetzt so aus:
Code: Alles auswählen
REM ***** BASIC *****
Dim odialog as object, oTab as object
Dim n as integer 'aktuelle Zeile
Sub Main
'Zugriff auf Dokument
oDoc=ThisComponent
'aktuelle Tabelle
oTab=oDoc.CurrentController.ActiveSheet
'Bestimme letzte benutzte Zelle
oCur=oTab.createCursor
oCur.gotoEndOfUsedArea(False)
n=oCur.rangeaddress.startrow+1
'Zugriff auf Dialog
DialogLibraries.loadLibrary( "Standard")
oLib = DialogLibraries.getByName("Standard")
oDialog = CreateUnoDialog(oLib.getByName("Dialog1"))
'Setze aktuelles Datum
octrdate=odialog.getcontrol("DateField1")
octrdate.date=cdatetounodate(now())
'Starte Dialog
x=oDialog.execute
End Sub
sub uebernehmen
octrdate=odialog.getcontrol("DateField1")
octrzweck=odialog.getcontrol("ListBox4")
octrfahrzeug=odialog.getcontrol("ListBox1")
octrbegleit=odialog.getcontrol("ListBox2")
octrbemerk=odialog.getcontrol("ListBox5")
oTab.getcellbyposition(1,n).value=CDateFromUnoDate(octrdate.date)
oTab.getcellbyposition(2,n).string=octrzweck.SelectedItem
oTab.getcellbyposition(3,n).string=octrfahrzeug.SelectedItem
oTab.getcellbyposition(4,n).string=octrbegleit.SelectedItem
oTab.getcellbyposition(5,n).string=octrbemerk.SelectedItem
'Zeilenzähler erhöhen
n=n+1
'Dialog schliessen
x=oDialog.endexecute
'Bereich nach Datum sortieren
Dim SortProps(2) As new com.sun.star.beans.PropertyValue
Dim SortFeld(0) As new com.sun.star.table.TableSortField
oDatei = ThisComponent
oSheet = oDatei.Sheets(0)
oBereich = oSheet.getCellRangeByName("B6:F4000")
SortFeld(0).Field = 0
SortFeld(0).IsAscending = True
SortFeld(0).FieldType = com.sun.star.util.SortFieldType.AUTOMATIC
SortProps(0).Name = "SortFields"
SortProps(0).Value = SortFeld()
SortProps(1).Name = "SortColumns"
SortProps(1).Value = False
SortProps(2).Name = "ContainsHeader"
SortProps(2).Value = true
oBereich.Sort(SortProps())
End Sub
Jetzt bin ich beim Thema eingetragene Zellen / Zeilen mit Knopfdruck automatisch mit Rahmen versehen.
Dies klappt noch nicht. Er rahmt jetzt genau eine Zeile B8-F8. Das war es.
Mit jedem Eintrag verändert sich die Zeile natürlich. Wie ich das erreiche, weiß ich momentan nicht.
Folgenden Code habe ich versucht:
Code: Alles auswählen
sub Rahmen
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 = "$B$8:$F$8"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
rem ----------------------------------------------------------------------
dim args2(12) as new com.sun.star.beans.PropertyValue
args2(0).Name = "OuterBorder.LeftBorder"
args2(0).Value = Array(0,0,26,0,0,26)
args2(1).Name = "OuterBorder.LeftDistance"
args2(1).Value = 0
args2(2).Name = "OuterBorder.RightBorder"
args2(2).Value = Array(0,0,26,0,0,26)
args2(3).Name = "OuterBorder.RightDistance"
args2(3).Value = 0
args2(4).Name = "OuterBorder.TopBorder"
args2(4).Value = Array(0,0,26,0,0,26)
args2(5).Name = "OuterBorder.TopDistance"
args2(5).Value = 0
args2(6).Name = "OuterBorder.BottomBorder"
args2(6).Value = Array(0,0,26,0,0,26)
args2(7).Name = "OuterBorder.BottomDistance"
args2(7).Value = 0
args2(8).Name = "InnerBorder.Horizontal"
args2(8).Value = Array(0,0,26,0,0,26)
args2(9).Name = "InnerBorder.Vertical"
args2(9).Value = Array(0,0,26,0,0,26)
args2(10).Name = "InnerBorder.Flags"
args2(10).Value = 0
args2(11).Name = "InnerBorder.ValidFlags"
args2(11).Value = 127
args2(12).Name = "InnerBorder.DefaultDistance"
args2(12).Value = 0
dispatcher.executeDispatch(document, ".uno:SetBorderStyle", "", 0, args2())
'Zeilenzähler erhöhen
n=n+1
end sub
minbari