Hallo zusammen,
also ich lerne und hab das verstanden
Ich habe nun kein neues Topic erstellt, weil die Grundfragestellung ja noch nicht abschliessend gelöst ist.....hoffe das ist okay.
Habe seit gestern den Code von Stephan als Grundlage benutzt und das so zusammengebaut. Zuerst das Format wandeln und dann Aktionen darauf ausfuehren.
Punkt 4 habe ich durch den Codeschnipsel von Clag so lösen können und gelöst -> Löschen der Zeile wenn dort "Täglich gesamt steht"
Das ist der aktuelle Code:
Code: Alles auswählen
Sub TESTCommunity
'Mit der Hilfe aus de.openoffice.info Community
'20190717 - 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
'blatt = ThisComponent.CurrentController.ActiveSheet
cur = aktuelles_Blatt.createCursor()
cur.GotoEndOfUsedArea(True)
letzte_zeile = cur.RangeAddress.EndRow
For i = 4 To letzte_zeile
With aktuelles_Blatt.getCellByPosition(6, i)
.Value = .String
LocalSettings.Language = "de"
LocalSettings.Country = "DE"
nfs = ThisComponent.NumberFormats
nf = "#.###,0"
nfid = nfs.queryKey(nf, LocalSettings, True)
If nfif = - 1 Then
nfid = nfs.addNew(nf, LocalSettings)
End If
.NumberFormat = nfid
'Start - Alle kleiner als 5km - delete Zeile
'Frage: Der Cursor ist ja schon auf der richtigen Position, wie kann ich ihn direkt ansprechen? Brauche ja nur den aktuellen Value - Ich mach das hier defintiv falsch
'If aktuelles_Blatt.getCellByPosition(6, i).Value < (5.0) Then
'aktuelles_Blatt.rows.removeByIndex(i, 1)
'End If
'Ende - Alle kleiner als 5km - delete Zeile
'Start - Täglich gesamt - delete Zeile
If left(aktuelles_Blatt.getCellByPosition(0, i).string, 7) = "Täglich" Then
aktuelles_Blatt.rows.removeByIndex(i, 1)
End If
'Ende - - Täglich gesamt - delete Zeile
End With
Next i
Next j 'Ende Schleifencode ueber alle Arbeitsblaetter
MsgBox "Programmcode durchgelaufen."
End Sub
a) Wenn ich das Makro ausführe, dann wird korrekt konvertiert von Uhrzeit nach Decimal - jedoch wenn eine Leerzeile dazwischen ist (und da sind welche) so wird diese mit einer Null "0" aufgefüllt. Wie kann man dies verhindern - also das die Zelle vorhanden und leer bleibt?
b) Punkt 1 wollte ich noch durch eine if-Schleife ergänzen, dass alle Zeilen entfernt werden, deren Wert kleiner 5 ist. Ich weiss aber nicht, wie ich die Schleife korrekt schreibe und den Value auslese.
Wenn möglich möchte ich immer noch, dass hier eine Zählvariable mitwirkt für den Punkt3 aus der Aufgabenliste...
3) Die Anzahl der Zeilen die aus Punkt 1 gelöscht wurden sollen in Zelle A2 unterhalb der Überschrift mit dem Text "Anzahl der gelöschten Zeilen: [variable Anzahl]" geschrieben werden. Darunter dann eine Leerzeile.
Ich danke Euch und ich bin jetzt echt heiss darauf mehr zu lernen und machen....
P.S: @clag: Das ist ja geil! Du hast einen Button gemacht, der das Makro ausführen kann