Makro Zeilen löschen

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Makro Zeilen löschen

Re: Makro Zeilen löschen

von LokutusvB » Di, 15.06.2010 13:31

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

Re: Makro Zeilen löschen

von komma4 » Di, 15.06.2010 09:48

Richtig:

die suche mit regulärem Ausdruck findet die Bereiche, in denen ein Inhalt vorhanden ist.

"Sicherer" ist das nicht, aber vllt. schneller 8)


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.

Re: Makro Zeilen löschen

von LokutusvB » Di, 15.06.2010 09:01

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.

Re: Makro Zeilen löschen

von komma4 » Mo, 14.06.2010 16:01

Habe in meiner Makrokiste was gefunden und etwas angepasst.

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

Kommst Du damit zurecht? Hilft Dir das weiter?

Re: Makro Zeilen löschen

von LokutusvB » Mo, 14.06.2010 13:19

Danke für das Verschieben!

Ich bin inzwischen soweit:

Code: Alles auswählen

...
Doc.getSheets.getByIndex(0).getRows.removeByIndex(1,X)
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:

Code: Alles auswählen

...
... .getCellByPosition(9, X)getString
Das würde ich dann Zeile für Zeile (X) durchsuchen lassen. Geht das auch einfacher?

Re: Makro Zeilen löschen

von LokutusvB » Mo, 14.06.2010 11:43

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

Re: Makro Zeilen löschen

von LokutusvB » Fr, 11.06.2010 11:56

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.

Re: Makro Zeilen löschen

von komma4 » Fr, 11.06.2010 11:52

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

Makro Zeilen löschen

von LokutusvB » Fr, 11.06.2010 11:42

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

Nach oben