Zeile löschen wenn Spalte 0

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

Moderator: Moderatoren

Stancer
***
Beiträge: 67
Registriert: Do, 21.06.2007 14:05

Zeile löschen wenn Spalte 0

Beitrag von Stancer »

Morgen zusammen,
Ich habe in einem Writer dokument 3 Tabellen erzeugt (Tabelle 4,5,6) mit jeweils 4 Spalten. Das writerdokument habe ich als Vorlage gespeichert. Nun wollte ich wissen ob und wie es möglich ist, per Makro alle Zeilen(nicht nur Inhalte sonder die komplette Zeile) in allen drei Tabellen zu löschen in der in der Spalte "Anzahl" der Wert 0 steht.
Vieln Dank für alle Antworten.

MfG Stancer
OpenOffice portable 2.1, Win XP
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: Zeile löschen wenn Spalte 0

Beitrag von Toxitom »

Hey Stancer,

es ist möglich :-)

Ohne weitere Details zu wissen, hier nur der Weg:

Tabellen haben einne eigenen Namen. Dadurch erhälst du das Objekt (über oDoc.getTextTables().getByName("xxx") ).
Die Tabellen haben ähnliche Strukturen wie Calc-Tabellen - also kannst du die Zellen einzeln ansprechen und den Wert auslesen. Über entsprechende Schleifen kannst du also alle Zeilen durchgehen , den Wert auslesen und wenn =0, dann die Zeile über ihren Index löschen (Methode: remove by Index(iIndex, iAnzahl)).
Sinnvollerweise beginnst du deine Schleife also rekursiv - also von hinten. Sonst stimmen die Indizes nicht.

Ja, und bei drei tabellen läufst du das dann eben dreimal durch....

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Stancer
***
Beiträge: 67
Registriert: Do, 21.06.2007 14:05

Re: Zeile löschen wenn Spalte 0

Beitrag von Stancer »

Hi Thomas,
danke schonmal für deine schnelle Antwort.
Bin mit Makros leider noch nicht so bewandert das ich das allein hinbekomme :( , deshalb frag ich hier . Hast du vielleicht nen Beispielcode den ich umschreiben kann.
Mehr Details: Also es handelt sich um 3 Tabellen die Tabelle 4,5 und 6 heißen. Diese wurden einfach über Einfügen-Tabelle eingefügt und mit Werten vesehen. Die erste Tabelle hat 72 Zeilen die zweite 12 und die dritte 6.
In jeder Tabelle heißt die zweite Spalte Anzahl(<B..>) und wenn diese den Wert 0 annimmt soll die gesamte Zeile gelöscht werden. Hilft das schon??
MfG Stancer
OpenOffice portable 2.1, Win XP
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: Zeile löschen wenn Spalte 0

Beitrag von Toxitom »

Hey Stancer,

der folgende Code sollte es tun - zur Not entsprechend anpassen.

Code: Alles auswählen

Sub TabZeileLoeschen
	oDoc = thisComponent
	for i = 4 to 6   'Tabellennamen
		oTab = oDoc.getTextTables().getByName("Tabelle" & i )
		iZe = oTab.getRows().count  'Anzahl Zeilen
		for n = iZe-1 to 0 step -1
			if oTab.getCellByPosition(1,n).string = "0" then  '2. Spalte, n-te Zeile
			  oTab.getRows().removeByIndex(n, 1)
			end if
		next
	next
End Sub
Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Stancer
***
Beiträge: 67
Registriert: Do, 21.06.2007 14:05

Re: Zeile löschen wenn Spalte 0

Beitrag von Stancer »

Hallo Thomas,
Danke für deine schnelle Hilfe.
Hat einwandfrei funktioniert. :D

Mit dankenden Grüßen Stancer
OpenOffice portable 2.1, Win XP
Antworten