Hallo zusammen,
wie in dem vorherigen Beitrag beschreiben, habe ich es mit einem dialogfeld gemacht.
Folgendes Makro habe ich geschrieben:
Dim oD1 as Object 'Dialog 1 (Eingabemaske) definieren
Dim myDoc as Object 'Dokumnet definieren
Dim oT1 as Object, oT2 as Object 'Tabelle „Liste“ und „Daten“ definieren
Dim nNeueDatSatz as integer 'Neue DatensatzZeilennummer
Dim nLastKm as integer
Dim dZeitCh as date 'Zeitspanne bei Änderung
Dim dZeitAnk as date 'Differenz bei automatischer Ankunftszeit
'------------------------------------
'--------------------------------------
Sub main
myDoc=ThisComponent
oT1=myDoc.sheets(0)
oT2=myDoc.sheets(1)
'— Maske initialisieren
DialogLibraries.LoadLibrary( „Standard“ )
oD1 = CreateUnoDialog( DialogLibraries.Standard.Maske )
initMaske
oD1.Execute()
end sub
'Button Abbrechen
Sub Abbrechen
oD1.EndExecute()
end sub
Sub initMaske
'— Neue Zeilennummer erzeugen
nNeueDatSatz = oT2.getCellRangeByName(„b1“).value + 5
'— Neue Datensatznummer eintragen
oD1.getcontrol(„DatSatzNr“).text= nNeueDatSatz - 4
'—Auswahllisten mit Daten füllen
FuellListe(„verant“, „a“, 10, 7) 'Fuellliste(„Liste“, Spalte, Zeile, Anzahl Elemente))
'—Eingabefelder Inhalte löschen
oD1.getcontrol(„verant“).text= „“
oD1.getcontrol(„txt_name“).text= „“
oD1.getcontrol(„txt_aktiv“).text= „“
oD1.getcontrol(„DateField1“).text= „“
oD1.getcontrol(„DateField2“).text= „“
End Sub
'-----Auswahllisten füllen
sub FuellListe(Liste, spalte, zeile, eNr)
FFeld=oD1.getcontrol(Liste)
FFeld.removeitems(0, eNr)
for i=0 to eNr
adr="$"+spalte+"$"+(i+zeile)
inhalt=oT2.getCellRangeByName(adr).string
FFeld.additem(inhalt,i)
next
FFeld.additem("",0)
end sub
'------Datenbank Bereich neu festlegen—
Sub DatenBereich
Dim aPos1 as New com.sun.star.table.CellAddress
oBereich=ThisComponent.NamedRanges
oBereich.removebyname(„Datenbank“)
oBereich.addNewbyName(„Datenbank“, „$Liste.$A$4:blush:M$“& nNeueDatSatz, aPos1, 0)
end Sub
'------Speicheradresse bestimmen
function dat_adr(sp)
zeile = nNeueDatSatz
dat_adr="$" & sp &"$" & zeile
end function
'------Button Satz hinzufügen-----
'------zunächst Fehlerkontrolle—
sub AddSatz
oDoc = ThisComponent
oSheet = oDoc.sheets(0)
oSheet.unprotect(„test“)
if oD1.getControl(„txt_aktiv“).text="" then
msgbox „Bitte eine Beschreibung der Aktivität eingeben“
oD1.getcontrol(„txt_aktiv“).setFocus()
elseif oD1.getControl(„verant“).text="" then
msgbox „Es muss ein Verantwortlicher benannt werden!“
oD1.getcontrol(„verant“).setFocus()
elseif oD1.getControl(„DateField1“).date=0 then
msgbox „Bitte Starttermin festlegen“
oD1.getcontrol(„DateField1“).setFocus()
elseif oD1.getControl(„DateField2“).date=0 then
msgbox „Endtermin muss angegeben werden“
oD1.getcontrol(„DateField2“).setFocus()
else
SatzSpeichern
end if
end sub
'-----Datensatz in die Datenbank eintragen
sub SatzSpeichern
’ Datum Endtermin
Dim fd2
fd2 = oD1.getControl(„DateField2“).date
ad=dat_adr(„f“)
oT1.getCellRangeByName(ad).value=CDateFromIso(fd2)
’ Verantwortlich
abfo = oD1.getControl(„verant“).text
ad=dat_adr(„d“)
oT1.getCellRangeByName(ad).string=abfo
’ Aktivität
anko = oD1.getControl(„txt_aktiv“).text
ad=dat_adr(„c“)
oT1.getCellRangeByName(ad).string=anko
’ Arbeitspaketbezeichnung
gru = oD1.getControl(„txt_name“).text
ad=dat_adr(„a“)
oT1.getCellRangeByName(ad).string=gru
’ Datensatz Nummer
ad=dat_adr(„b“)
oT1.getCellRangeByName(ad).value=nNeueDatSatz - 4
’ Stauts
ad=dat_adr(„g“)
oT1.getCellRangeByName(ad).string=„offen“
’ Datum Starttermin
Dim fd1
fd1 = oD1.getControl(„DateField1“).date
ad=dat_adr(„e“)
oT1.getCellRangeByName(ad).value=CDateFromIso(fd1)
’ Datensatznummer um 1 erhöhen
nDatNr= oT2.getCellRangeByName(„b1“).value + 1
oT2.getCellRangeByName(„b1“).value=nDatNr
DatenBereich ’ Datenbankbereich wird neu benannt
myDoc.store() ’ Datei wird gesichert
initMaske ’ Eingabemaske wird neu initialisiert
oDoc = ThisComponent
oSheet = oDoc.sheets(0)
oSheet.protect(„test“)
end sub
Bei interesse kann ich die Datei auch mal zur verfügung stellen 
Grüße
Tim