Office - Word, Excel und Co. 9.752 Themen, 41.587 Beiträge

Eingabe-Maske für eine Tabelle unter Libre-Office / Calc

minbari / 14 Antworten / Flachansicht Nickles

Moin zusammen,

ich habe in der Vergangenheit eine Excel-Liste erstellt, wo über eine Eingabe-Maske Daten in eine Tabelle eingefügt werden.
Nun hat mein Arbeitgeber beschlossen, ab Januar 25 auf Libre-Office umzustellen.
Natürlich funktioniert meine Liste unter Libre nicht mehr.

Nun bin ich als dabei, eine neue Liste zu erstellen.
Ich bin auch gut vorangekommen. Die Tabelle ist fertig, die Eingabe-Maske (DialogBox) steht und Daten sind eingepflegt.

Jetzt geht es darum, die Daten, die über PullDown-Menüs in der Maske ausgewählt werden, in die Tabelle zu übernehmen und nach Datum zu sortieren.
Meine Programmier-Kenntnisse sind leider nur rudimentär und unter Libre quasi gleich null. 
In der Vergangenheit habe ich immer im Netz recherchiert, Code kopiert, angepasst, ausprobiert oder hier um Hilfe gebeten. Hier komme ich jedoch nicht weiter.

Habt Ihr eine Idee?

Screens füge ich bei. Der erste übernommene Code funktioniert nicht wirklich.

Code bisher:

REM ***** BASIC *****

Dim odialog as object, oTab as object
Dim n as integer 'akutelle Zeile


Sub Main
'ZUgriff auf Dokument
oDoc=ThisComponent
'aktuelle Tabelle
oTab=oDoc.CurrentController.ActiveSheet
'Bestimme letzte beutzte 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")
octrkat=odialog.getcontrol("ListBox1")
octrfehler=odialog.getcontrol("Listbox2")
oTab.getcellbyposition(1,n).value=CDateFromUnoDate(octrdate.date)
oTab.getcellbyposition(2,n).string=octrkat.text
oTab.getcellbyposition(3,n).string=octrfehler.text
'Zeilenzähler erhöhen
n=n+1
end sub

Danke für die Hilfe!

minbari

bei Antwort benachrichtigen
minbari Nachtrag zu: „Eingabe-Maske für eine Tabelle unter Libre-Office / Calc“
Optionen

Alles in allem bin ich sehr positiv überrascht. Ich denke man kann im Grunde alles, was man mit MS Office machen kann, auch mit Libre Office machen - nur eben anders...

Und wenn mann bedenkt, dass Libre gratis ist, das ist dann schon der Hammer.

Der aktuelle (funktionierende) Code sieht jetzt so aus:

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
end sub

Hier fehlen dann "nur" noch die 3 besagten Funktionen, die ich weiter oben erfragt habe.

bei Antwort benachrichtigen