Seite 1 von 1

Letzte Zelle Suchen

Verfasst: Do, 30.10.2008 16:35
von Ibanez
Ich mal wieder. :o

Ich habe eine Dialog, der verschiedenen Zellen einer Zeile befüllt, angefangen bei B2 und endet bei Q2, wobei manche Zellen sich nach der Eingabe selber Befüllen (über eine Funktion)
.
Wenn jetzt ein Neueintrag erfolgt möchte ich, dass der Dialog automatisch in B3 bis Q3 schreibt, usw.

Dank Komm4 habe ich bisher diesen Code für die Befüllung einzelner Zellen:

Code: Alles auswählen

Dim DLG as Object, oTB1 as Object, oTB2 as Object
Dim DLG ,oDoc,oform as Object
Dim Opt_Btn_State as String
Dim Opt_Btn as Object

Sub Eingabe
	oDoc = thisComponent
	GlobalScope.BasicLibraries.LoadLibrary("Tools")
	DLG = LoadDialog("Standard", "Dlg_Eingabe", oDoc.DialogLibraries)

	oTB1 = DLG.GetControl("TextField_MA")
	oTB2 = DLG.GetControl("TextField_Datum")
	oTB3 = DLG.GetControl("TextField_HH")
	oTB4 = DLG.GetControl("TextField_MM")
	oTB5 = DLG.GetControl("TextField_Termin")
	oTB6 = DLG.GetControl("TextField_Ort")
	oTB7 = DLG.GetControl("TextField_Nummer")
	oTB8 = DLG.GetControl("TextField_Info")
	oTB9 = DLG.GetControl("TextField_Auto")
	
   	oTB1.Model.Text = oDoc.Sheets(0).GetCellRangeByName("B2").String
   	oTB2.Model.Text = oDoc.Sheets(0).GetCellRangeByName("C2").String
  	oTB3.Model.Text = oDoc.Sheets(0).GetCellRangeByName("D2").String
   	oTB4.Model.Text = oDoc.Sheets(0).GetCellRangeByName("E2").String
  	oTB5.Model.Text = oDoc.Sheets(0).GetCellRangeByName("F2").String
   	oTB6.Model.Text = oDoc.Sheets(0).GetCellRangeByName("G2").String
  	oTB7.Model.Text = oDoc.Sheets(0).GetCellRangeByName("H2").String
   	oTB8.Model.Text = oDoc.Sheets(0).GetCellRangeByName("M2").String
  	oTB9.Model.Text = oDoc.Sheets(0).GetCellRangeByName("Q2").String
  	
   	DLG.execute()
End Sub

sub TB_Change1
	oDoc.Sheets(0).GetCellRangeByName("B2").String = oTB1.Model.Text
	oDoc.Sheets(0).GetCellRangeByName("C2").String = oTB2.Model.Text
	oDoc.Sheets(0).GetCellRangeByName("D2").String = oTB3.Model.Text
	oDoc.Sheets(0).GetCellRangeByName("E2").String = oTB4.Model.Text
	oDoc.Sheets(0).GetCellRangeByName("F2").String = oTB5.Model.Text
	oDoc.Sheets(0).GetCellRangeByName("G2").String = oTB6.Model.Text
	oDoc.Sheets(0).GetCellRangeByName("H2").String = oTB7.Model.Text
	oDoc.Sheets(0).GetCellRangeByName("M2").String = oTB8.Model.Text
	oDoc.Sheets(0).GetCellRangeByName("Q2").String = oTB9.Model.Text
end sub
Danke
Ibanez

Re: Letzte Zelle Suchen

Verfasst: Do, 30.10.2008 17:39
von komma4
Standardfrage (Suchfunktion benutzen!), siehe Calc-Routine zum Ermitteln eines benutzten Bereichs

Re: Letzte Zelle Suchen

Verfasst: Fr, 31.10.2008 12:23
von Ibanez
Hallo Komma,

dank Deiner Hilfe habe ich den Code für das Befüllen definierter Zellen. Ich habe aber keine definierte Zellen mehr. D.h. ich müsste beides verbinden. Deinen Code (reduziert auf die Spalten), da die Einträge (Datum/Zeit/etc.) immer in die selbe Spalte geschrieben werden, aber wie die Überschrift besagt immer in die erste frei Zeile. Ich habe beide Codes, aber bekomme den Kniff nicht raus, wie ich sie kombiniere :(

Re: Letzte Zelle Suchen

Verfasst: Fr, 31.10.2008 13:46
von Karolus
Hallo
Füge folgende Zeilen in deinen Makros ein:

Code: Alles auswählen

osheet = odoc.sheets(0)
oCur = osheet.createCursor
ocur.goToEndOfUsedArea(0)
lZi = ocur.getRangeAddress.endRow ' !  Index ! letzte benutzte Zeile
neuZ = lZi + 2 ' ! Zeilennr ! der ersten leeren Zeile
Alle Zelladressen änderst du dann ab in die Form:
....("A" & neuZ )...

Gruß Karo

Re: Letzte Zelle Suchen

Verfasst: Fr, 14.11.2008 14:46
von Ibanez
Hat jemand noch eine ander Idee. Ich bekomme es nicht hin, habe aber mitlerweile die Datei verändert. Ich generiere zum nachträglichen Sortieren einen Code, bestehend aus Datum, Uhrzeit und weiteren paramerten. Dieser ist somit für jede Zeileimmer eineideutig. Wenn noch kein Code vergeben wurde, steht als Code "9912300000" in dem Feld wo der Code generiert wird. Ich habe mir jetzt überlegt, man könnte doch dem Makro sagen suche die Codespalte nach diesem 9912300000 ab und schreibe die einzelnen Werte in die dahinterliegenden Feldern (Zeile).

Wie gesagt der Zahlencode ist eineindeutig. Sobald ich irgendeinen Parameter ändere (Felb befülle) ist er ungleich 9912300000.

Alternativ würde mir auch eine kurze Erläuterung der Codezeile "Finde erste leere Zeile" helfen.

Greez Ibanez

Re: Letzte Zelle Suchen

Verfasst: Fr, 14.11.2008 17:22
von Ibanez
Garfield hat geschrieben:
Ibanez hat geschrieben:Hat jemand noch eine ander Idee.
Warum? Karolus hat Dir doch schon ein Beispiel genannt die letzte Zeile zu finden.
Ja stimmt schon. Aber irgendwie ist da ein Fehler drin, wobei ich den eben eventuell entdeckt habe. Ich melde mich wenn Problem gelöst - oder auch nicht. Bis dahin, danke an Garfield, Karolus und den Rest des Forums

Ibanez

Re: Letzte Zelle Suchen

Verfasst: Fr, 14.11.2008 20:17
von Karolus
Hallo Ibanez
Ich hatte übersehen das in deinem Makro 'osheet' noch garnicht definiert wurde, ich hab das jetzt in der letzten Antwort abgeändert.
Damit sollte es jetzt ohne Fehler funktionieren.

Gruß Karo

Re: Letzte Zelle Suchen

Verfasst: Fr, 28.11.2008 12:15
von Ibanez
Karolus hat geschrieben:Hallo Ibanez
Ich hatte übersehen das in deinem Makro 'osheet' noch garnicht definiert wurde, ich hab das jetzt in der letzten Antwort abgeändert.
Damit sollte es jetzt ohne Fehler funktionieren.
Gruß Karo
Hallo Karolus,

sorry ich bin momentan leicht übermüdet. In welcher Antwort, hast Du es geändert?. Ich bekomme das Problem nicht gelöst. Dabei ist es eigentlich echt nicht so kompliziert wie es mir mitlerweile vorkommt. Ich werde einfach einen kleinen Trick anwenden. Ich lasse vor dem Beenden die Tabelle sortieren solange schreiben ich meine Daten in eine der letzten irgendwo bei Zeile 1000. Ich bekomms anders nicht hin :(