Letzte Zelle Suchen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Ibanez
**
Beiträge: 40
Registriert: Fr, 25.07.2008 09:50

Letzte Zelle Suchen

Beitrag 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
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Letzte Zelle Suchen

Beitrag von komma4 »

Standardfrage (Suchfunktion benutzen!), siehe Calc-Routine zum Ermitteln eines benutzten Bereichs
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Ibanez
**
Beiträge: 40
Registriert: Fr, 25.07.2008 09:50

Re: Letzte Zelle Suchen

Beitrag 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 :(
Karolus
********
Beiträge: 7534
Registriert: Mo, 02.01.2006 19:48

Re: Letzte Zelle Suchen

Beitrag 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
Zuletzt geändert von Karolus am Fr, 14.11.2008 20:13, insgesamt 1-mal geändert.
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Ibanez
**
Beiträge: 40
Registriert: Fr, 25.07.2008 09:50

Re: Letzte Zelle Suchen

Beitrag 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
Ibanez
**
Beiträge: 40
Registriert: Fr, 25.07.2008 09:50

Re: Letzte Zelle Suchen

Beitrag 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
Karolus
********
Beiträge: 7534
Registriert: Mo, 02.01.2006 19:48

Re: Letzte Zelle Suchen

Beitrag 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
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Ibanez
**
Beiträge: 40
Registriert: Fr, 25.07.2008 09:50

Re: Letzte Zelle Suchen

Beitrag 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 :(
Antworten