Makro - Zeile löschen wenn WERT kleiner als

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

Moderator: Moderatoren

MavMan
*
Beiträge: 10
Registriert: Mi, 03.07.2019 16:13

Makro - Zeile löschen wenn WERT kleiner als

Beitrag von MavMan »

Hallo an alle meine Erlöser....

ich habe hier eine kleine Herausforderung die ich auch mit viel Googlen und probieren nicht gelöst bekomme. Mit Makros habe ich schon geschafft, aber dieses Problem schafft mich :-(
Wenn ihr mir helfen könnt wäre das echt klasse....

Erläuterung:
Ich benutze LibreOffice Version: 6.0.7.3 und brauche ein Makro weil ich noch andere Sachen und Änderungen in einem Rutsch machen möchte.

Als Export aus einem Programm bekomme ich eine xls-File.
Nun möchte ich ab Zelle F5 in der ganzen Spalte F nach unten durchsuchen lassen und prüfen, ob die Zeit in dieser Zelle kleiner 15 Min ist. Wenn ja, dann lösche diese Zeile, sonst diesen Wert (die Zeit) fett formatieren. Nebenbemerkung: Ich weiss nicht wieviele Zeilen die Tabelle mit Fahrteinträge nach unten hat.

Die Defintion der Zelle ist durch den Export bedingt mit WERT definiert, also z.B. WERT(00:10:00) - vielleicht muss man das erst konvertieren.

Ich hoffe ich habe es gut beschrieben und ihr wisst was ich vorhabe. Alle Zeiten zur Firma und zurück und so kleine Umparkerei sollen weg.

Ich DANKE Euch jetzt schon, dass ihr es Euch mal anschaut.

Grüsse
MavMan
Screenshot-Tabelle_Fahrtenbuch.png
Screenshot-Tabelle_Fahrtenbuch.png (63.25 KiB) 2975 mal betrachtet
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Makro - Zeile löschen wenn WERT kleiner als

Beitrag von Stephan »

z.B.:

Code: Alles auswählen

Sub Main
	blatt = ThisComponent.CurrentController.ActiveSheet
	
	cur = blatt.createCursor()
	cur.GotoEndOfUsedArea(True)
	letzte_zeile = cur.RangeAddress.EndRow
	
	For i = 4 To letzte_zeile
		If blatt.getCellByPosition(5, i).Value < (15/(24*60)) Then
			blatt.rows.removeByIndex(i, 1)
			letzte_zeile = letzte_zeile - 1
			i = i - 1
		End If
	Next i

End Sub
GRuß
Stephan
mikeleb
*******
Beiträge: 1316
Registriert: Fr, 09.12.2011 16:50

Re: Makro - Zeile löschen wenn WERT kleiner als

Beitrag von mikeleb »

Hallo,

etwas einfacher wäre es die Zeilen von unten nach oben zu durchlaufen:

Code: Alles auswählen

For i = letzte_zeile To 4 Step -1
		If blatt.getCellByPosition(5, i).Value < (15/(24*60)) Then
			blatt.rows.removeByIndex(i, 1)
		End If
	Next i
Gruß,
mikeleb
MavMan
*
Beiträge: 10
Registriert: Mi, 03.07.2019 16:13

Re: Makro - Zeile löschen wenn WERT kleiner als

Beitrag von MavMan »

Ihr seid SUPER!
Das funktioniert genauso, wie es soll und geplant ist. Auf diese Lösung wäre ich nicht gekommen und ich lerne dazu. Echt geil. Vielen, vielen Dank an Euch....
Antworten