Makro Zeilen löschen
Moderator: Moderatoren
Makro Zeilen löschen
Hallo,
ich habe das Forum ein wenig durchsucht, konnte aber leider nicht etwas passendes für mich entdecken. Ich möchte mir ein Makro erstellen, was ein Tabellenblatt wie folgt bearbeitet. Es soll von der ersten Zeile aus Zeile für Zeile weiterspringen und nach Inhalt kontrollieren. Ist in der ersten Spalte Inhalt vorhanden, dann springe zur nächsten Zeile. Ist die erste Zeile ohne Inhalt gefunden, lösche alle darüberliegenden Zeilen mit Inhalt.
Wie kann ich das in einem Makro bewerkstelligen?
Viele Grüße
LvB
ich habe das Forum ein wenig durchsucht, konnte aber leider nicht etwas passendes für mich entdecken. Ich möchte mir ein Makro erstellen, was ein Tabellenblatt wie folgt bearbeitet. Es soll von der ersten Zeile aus Zeile für Zeile weiterspringen und nach Inhalt kontrollieren. Ist in der ersten Spalte Inhalt vorhanden, dann springe zur nächsten Zeile. Ist die erste Zeile ohne Inhalt gefunden, lösche alle darüberliegenden Zeilen mit Inhalt.
Wie kann ich das in einem Makro bewerkstelligen?
Viele Grüße
LvB
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Makro Zeilen löschen
Ist in den anderen Spalten denn Inhalt?
Oder möchtest Du das gesamte Blatt leeren?
Stichwort für die Suche ist UsedArea
Moderation,4: ins zuständige BASIC-Unterforum verschoben
Oder möchtest Du das gesamte Blatt leeren?
Stichwort für die Suche ist UsedArea
Moderation,4: ins zuständige BASIC-Unterforum verschoben
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)
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)
Re: Makro Zeilen löschen
Hallo komma4,
ja, in den anderen Spalten ist auch Inhalt, wenn in der ersten Spalte Inhalt ist. Deswegen möchte ich einfach, wenn in der ersten Spalte Inhalt vorhanden ist, weiterspringen. Ist in der ersten Spalte kein Inhalt, ist die ganze Zeile leer, alles darüber soll gelöscht werden. Unterhalb dieser leeren Zeile ist wieder Inhalt, welcher ja dann automatisch oben stehen sollte. danke für den Tip, werde mir UsedArea anschauen.
ja, in den anderen Spalten ist auch Inhalt, wenn in der ersten Spalte Inhalt ist. Deswegen möchte ich einfach, wenn in der ersten Spalte Inhalt vorhanden ist, weiterspringen. Ist in der ersten Spalte kein Inhalt, ist die ganze Zeile leer, alles darüber soll gelöscht werden. Unterhalb dieser leeren Zeile ist wieder Inhalt, welcher ja dann automatisch oben stehen sollte. danke für den Tip, werde mir UsedArea anschauen.
Re: Makro Zeilen löschen
Ich sehe schon, das Thema ist wohl im Basic-Bereich besser aufgehoben. Denn was ich benötige, ist ein Basic-Script.
Soll ich das Thema hier im Bereich beenden und im Basic-Forum ein neues eröffnen oder kann irgendwer das Thema verschieben? Danke!!!
Viele Grüße
LvB
Moderation,4: in Basic-Bereich verschoben
Soll ich das Thema hier im Bereich beenden und im Basic-Forum ein neues eröffnen oder kann irgendwer das Thema verschieben? Danke!!!
Viele Grüße
LvB
Moderation,4: in Basic-Bereich verschoben
Re: Makro Zeilen löschen
Danke für das Verschieben!
Ich bin inzwischen soweit:
Jetzt habe ich nur noch das Problem, wie ich X ermitteln kann. Ich konnte keine Prüfung finden, ob eine Zeile Inhalt hat oder nicht. Ich könnte auch Zeile für Zeile prüfen und löschen. Nur habe ich bisher nicht finden können, wie ich eine Calc-Zeile auf Inhalt prüfen kann. Wie stelle ich das am geschicktesten an?
Zusatz:
Habe folgendes gefunden:
Das würde ich dann Zeile für Zeile (X) durchsuchen lassen. Geht das auch einfacher?
Ich bin inzwischen soweit:
Code: Alles auswählen
...
Doc.getSheets.getByIndex(0).getRows.removeByIndex(1,X)
Zusatz:
Habe folgendes gefunden:
Code: Alles auswählen
...
... .getCellByPosition(9, X)getString
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Makro Zeilen löschen
Habe in meiner Makrokiste was gefunden und etwas angepasst.
Kommst Du damit zurecht? Hilft Dir das weiter?
Code: Alles auswählen
Sub de39335
' 2010-06-14
oBlatt = ThisComponent.Sheets().getByName( "Tabelle1" )
oBereich = oBlatt.getCellRangeByPosition( 0, 0, 0, 1000 )
oSearchDesc = oBereich.createSearchDescriptor()
With oSearchDesc
.SearchRegularExpression = True
.SearchString = "^."
End With
oFoundAll = oBereich.FindAll( oSearchDesc )
' oFoundAll.AbsoluteName()
' hat bspw. folgende Rückgabe:
' $Tabelle1.$A$1:$A$4;$Tabelle1.$A$6:$A$8
' Finden des letzten Zelladresse des ersten Bereichs
iDoppelpunkt = Instr( 1, oFoundAll.AbsoluteName(), ":" )
iSemikolon = Instr( 1, oFoundAll.AbsoluteName(), ";" )
sLetzteZelle = MID( oFoundAll.AbsoluteName(), iDoppelpunkt+1, iSemikolon-iDoppelpunkt-1 )
print "Erster Bereich endet mit Zelle " & sLetzteZelle
End Sub
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)
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)
Re: Makro Zeilen löschen
Hallo komma4,
wenn ich nur schon dein Verständnis für OpenOffice Basic hätte
, dann wäre ich kein Fragesteller mehr, sondern ein Helferlein, so wie du.
Wenn ich das richtig verstehe, durchsuchst du mit Hilfe der regulären Audrücke die Zellen auf Inhalt. Mit Verwendung der String-Manipulation "baust" du dir die Koordinaten zurecht. Das sollte mir weiter helfen. Dieses Vorgehen ist sicherei, als mein Absuchen einzellner Zellen auf Inhalt.
wenn ich nur schon dein Verständnis für OpenOffice Basic hätte

Wenn ich das richtig verstehe, durchsuchst du mit Hilfe der regulären Audrücke die Zellen auf Inhalt. Mit Verwendung der String-Manipulation "baust" du dir die Koordinaten zurecht. Das sollte mir weiter helfen. Dieses Vorgehen ist sicherei, als mein Absuchen einzellner Zellen auf Inhalt.
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Makro Zeilen löschen
Richtig:
die suche mit regulärem Ausdruck findet die Bereiche, in denen ein Inhalt vorhanden ist.
"Sicherer" ist das nicht, aber vllt. schneller
Hatte gerade etwas Zeit den Code ums Löschen zu erweitern:
Das klappt hier - wie Du Dir das hoffentlich wünschst.
die suche mit regulärem Ausdruck findet die Bereiche, in denen ein Inhalt vorhanden ist.
"Sicherer" ist das nicht, aber vllt. schneller

Hatte gerade etwas Zeit den Code ums Löschen zu erweitern:
Code: Alles auswählen
iZeilenNr = MID( sLetzteZelle, sZweiterDollar+1, ( Len( sLetzteZelle ) - sZweiterDollar ) )
print "letzte Zeile ist dann: " & iZeilenNR
Dim oRangeAddress As New com.sun.star.table.CellRangeAddress
With oRangeAddress
.Sheet = 0
.StartColumn = 0
.StartRow = 0
.EndColumn = 3 ' Index der letzten Spalte zum Entfernen
.EndRow = iZeilenNR
End With
oBlatt.removeRange( oRangeAddress, com.sun.star.sheet.CellDeleteMode.UP )
Das klappt hier - wie Du Dir das hoffentlich wünschst.
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)
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)
Re: Makro Zeilen löschen
Danke dir für deine Mühe. Schaut für mich sehr gut aus
. Das werde ich in meine Delphi-Bibliothek aufnehmen und testen.
Viele Grüße
LvB

Viele Grüße
LvB