[gelöst] Makro - Wenn in Zelle Zeit kleiner als dann Zeile löschen

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

Moderator: Moderatoren

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

[gelöst] Makro - Wenn in Zelle Zeit kleiner als dann Zeile löschen

Beitrag von MavMan »

Hallo zusammen,

habe noch ein Problemchen und mit Zeitformat kenn ich mich leider (noch nicht) aus.
Ich habe eine Tabelle und gehe da über die Zeilen in einer Spalte drüber.....

In der Spalte sind Zeiten enthalten. Nun möchte ich alle Zeilen löschen, wenn der Wert kleiner 3 Minuten ist.
In der Beispielzelle sehe ich zum Beispiel: 01:06:38

Im Anhang habe ich für Euch die Daten der Zelle aus MRI exportiert.
Meine Libre Version ist: 6.0.7.3

Vielen Dank für Eure Hilfe im voraus...

Grüsse
MavMan
Dateianhänge
MRI-Feldinformationen.pdf
(25.05 KiB) 125-mal heruntergeladen
Zuletzt geändert von MavMan am Do, 24.10.2019 11:36, insgesamt 1-mal geändert.
mikeleb
*******
Beiträge: 1316
Registriert: Fr, 09.12.2011 16:50

Re: Makro - Wenn in Zelle Zeit kleiner als dann Zeile löschen

Beitrag von mikeleb »

Hallo,
worin besteht jetzt die Frage?
1:06:38 bedeutet 1 h, 6 min , 38 s. Das sind also 1+6/60+38/3600=1,1105556 h oder in Tagen: 1,1105556/24=0,0462731.
Kurz: der Zellwert ist die Zeit in Tagen.
Bei 3 min muss also auf einen Wert von 3/60/24=0,002083 (Periode 3!) getestet werden.
Gruß,
mikeleb
MavMan
*
Beiträge: 10
Registriert: Mi, 03.07.2019 16:13

Re: Makro - Wenn in Zelle Zeit kleiner als dann Zeile löschen

Beitrag von MavMan »

vielen Dank für die schnelle Antwort. Deine Erklärung habe ich verstanden und wollte es so jetzt lösen - aber es klappt nicht :-(

Liegt es am Format in der Zelle oder ist mein Vergleich auf den Value falsch?
So habe ich es probiert....(im Anhang ist auch ein MRI-Export der Zelle)

Code: Alles auswählen

Sub ONLINE
	'Mit der Hilfe aus de.openoffice.info Community 
	'20191021 - Initiale Erstellung
	blattanzahl = ThisComponent.Sheets.Count
	For j = 0 To blattanzahl-1
		aktuelles_Blatt = ThisComponent.Sheets.getByIndex(j)
		
			'Start Schleifencode ueber alle Arbeitsblaetter	
			Dim LocalSettings As New com.sun.star.lang.Locale
	
			cur = aktuelles_Blatt.createCursor()
			cur.GotoEndOfUsedArea(True)
			letzte_zeile = cur.RangeAddress.EndRow
	
			'unterhalb Tabellenkopf ab Zeile 5 und Spalte F - Zeile loeschen, wenn Wert <= 3 min
			For i = 4 To letzte_zeile
				If  aktuelles_Blatt.getCellByPosition(5, i).Value < "0,002083" Then
					aktuelles_Blatt.rows.removeByIndex(i, 1)
				End if
			Next i 
	
	Next j 'Ende Schleifencode ueber alle Arbeitsblaetter
	MsgBox "Programmcode durchgelaufen."
End Sub
mikeleb
*******
Beiträge: 1316
Registriert: Fr, 09.12.2011 16:50

Re: Makro - Wenn in Zelle Zeit kleiner als dann Zeile löschen

Beitrag von mikeleb »

Hallo,

Code: Alles auswählen

"0,002083"
ist ein String.
Den Wert vergleichst du mit

Code: Alles auswählen

0,002083
Gruß,
mikeleb
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Makro - Wenn in Zelle Zeit kleiner als dann Zeile löschen

Beitrag von Stephan »

die Zeile:

Code: Alles auswählen

If  aktuelles_Blatt.getCellByPosition(5, i).Value < "0,002083" Then
muss lauten:

Code: Alles auswählen

If  aktuelles_Blatt.getCellByPosition(5, i).Value < 0.002083 Then
(mit Punkt)


Gruß
Stephan
mikeleb
*******
Beiträge: 1316
Registriert: Fr, 09.12.2011 16:50

Re: Makro - Wenn in Zelle Zeit kleiner als dann Zeile löschen

Beitrag von mikeleb »

Hallo,
(mit Punkt)
natürlich - :oops:
Gruß,
mikeleb
MavMan
*
Beiträge: 10
Registriert: Mi, 03.07.2019 16:13

Re: Makro - Wenn in Zelle Zeit kleiner als dann Zeile löschen

Beitrag von MavMan »

Ihr seid die besten! Vielen Dank - jetzt funktioniert es einwandfrei.

Dieser Beitrag kann als gelöst markiert werden (weiss nicht wie es geht).
Viele Grüsse
MavMan
Antworten