Was heißt "bei dir"? Ich vermute jetzt mal ins Blaue, das du eine eigene (neue) Datei hast, mit der du loslegen willst (tu dir bitte nicht an, die Exceldatei umstricken zu wollen). Da ich nicht weiß, wie du die Datei angelegt hast, ist es müßig zu raten. Da wäre es sinnvoller, wenn du uns an deinem Entwurf teilhaben lässt.bei mir klappt das nicht. Die Eingabe wird nicht übernommen.
Den Fehler in der Zuordnung habe ich korrigiert. Nun ein kleiner Crashkurs zu meinem Makro.
Code: Alles auswählen
Sub Daten_Uebernehmen
'Test, ob alle erforderlichen Daten vorhanden sind
oNachricht=oHptDialog.getControl("Label14")
aFelder=array("DateField1","PatternField1","TextField6","TextField4","TextField5")
Dim aEingaben(6)
for i=0 to 4
octrl=oHptDialog.getControl(aFelder(i))
if octrl.text="" then
oNachricht.text="Bitte alle Felder ausfüllen!"
wait 2000
oNachricht.text=""
octrl.setfocus
exit sub
end if
aEingaben(i+1)=octrl.text
next
'Daten übertragen
oNachricht.text="Aktenplannummer wird gesucht ..."
'letzte Zeile finden
n=oVerfuegen.columns(0).queryEmptyCells.rangeaddresses(0).startrow
oBereich=oVerfuegen.getCellRangeByPosition(0,1,6,n-1)
aDaten()=oBereich.getDataArray
neueNr=1
for i=ubound(aDaten()) to 0 step -1
if aDaten(i)(2)=aEingaben(2) then
neueNr=aDaten(i)(0)+1
i=0
end if
next
'Ordnungsnummer eintragen
aEingaben(0)=neueNr
'Formatumwandlung der Datumsangabe
aEingaben(1)=int(cdate(aEingaben(1))
aEingaben(6)=""
'neuen datensatz schreiben
oVerfuegen.getCellRangeByPosition(0,n,6,n).setDataArray(array(aEingaben()))
oNachricht.text="Verfügung wurde unter der Ordnungsnummer " & neueNr & " gespeichert"
wait 2000
oNachricht.text=""
Eingaben_Loeschen
End Sub
Zunächst lege ich ein Array an (aFelder) in dem ich die Dialogfelder in der Reihenfolge benenne in der ich sie auslesen will (da steckte mein Fehler) und ein weiteres Array (aEingaben) in die die Werte kommen sollen. Danach durchlaufe ich die 5 Dialogfelder, teste ob sie leer sind (wenn ja wird die Sub abgebrochen) und lese sonst ihren Wert in aEingaben ein.
Bevor nun die Daten übertragen werden, muss noch die Ordnungsnummer festgelegt werden.
Mit der Zeile
Code: Alles auswählen
n=oVerfuegen.columns(0).queryEmptyCells.rangeaddresses(0).startrow
Anschließend lese ich den gesamten Bereich A1:G3996 in das Array aDaten. Der Bereich A1:G3996 geht von Spalte 0 und Zeile 1 bis Spalte 6 und Zeile 3996. Daher .getCellRangeByPosition(0,1,6,n-1).
Diesen Bereich durchlaufe ich jetzt rückwärts und schaue, ob die Aktenplannumer schon mal auftauchte und wenn ja welche Ordnungsnummer (zuletzt) vergeben wurde. Dann wird die Schleife sofort beendet. Wenn nichts gefunden wurde, ist die neue Ordnungsnummer halt die 1.
Die Ordnungsnummer wird nun in das erste Element des Array aEingaben geschrieben. Das Verfügungsdatum wird erst einmal leer gelassen.
Mit der Zeile
Code: Alles auswählen
oVerfuegen.getCellRangeByPosition(0,n,6,n).setDataArray(array(aEingaben()))