Seite 1 von 1

in Tabelle mit Marco Zeilen löschen

Verfasst: Di, 04.04.2006 14:20
von Felixcate
Hallo

ich möchte in meiner Tabelle mit einen VB Macro alle Zeilen löschen wo in Spalte F nicht der String "Scheck" steht.

Wie kann ich das anstellen???

Danke schonmal!! :D

Verfasst: Di, 04.04.2006 16:36
von Stephan
ich möchte in meiner Tabelle mit einen VB Macro alle Zeilen löschen wo in Spalte F nicht der String "Scheck" steht.
VBA geht in OOo nicht (VB hingegen erzeugt keine Makros). In OOoBasic bzw. StarBasic geht es wenn die Tabellen den Namen "meineTabelle" hat so:

Code: Alles auswählen

Sub Main
Doc = ThisComponent
oSheet = Doc.Sheets("meineTabelle")
oCellCursor = oSheet.createCursor() 
i=0
Do
	if oSheet.getCellByPosition(5,i).String = "Scheck" Then
			oSheet.Rows.removeByIndex(i,1)
		Else
			i=i+1
	End if
	oCellCursor.GotoEndOfUsedArea(True) 
	letzte_Zeile = oCellCursor.getRangeAddress.EndRow
Loop While i-1 < letzte_Zeile
End Sub

Gruß
Stephan

Verfasst: Di, 04.04.2006 16:59
von Felixcate
hey danke funktioniert !! wie kann ich den bezug auf das aktuelle document machen also die tabelle welche gerade offen ist? Doc.Sheets( ???? )

Verfasst: Di, 04.04.2006 19:07
von Stephan

Code: Alles auswählen

Sub Main
Doc = ThisComponent
oSheet = Doc.Sheets(Doc.currentcontroller.activeSheet.Name)
oCellCursor = oSheet.createCursor() 
i=0
Do
	if oSheet.getCellByPosition(5,i).String = "Scheck" Then
			oSheet.Rows.removeByIndex(i,1)
		Else
			i=i+1
	End if
	oCellCursor.GotoEndOfUsedArea(True) 
	letzte_Zeile = oCellCursor.getRangeAddress.EndRow
Loop While i-1 < letzte_Zeile
End Sub

Gruß
Stephan

Verfasst: Do, 06.04.2006 13:50
von kannenklaus
hallo stephan,

bei diesem code-fragment wird immer nur ein und nicht das jeweils aktive blatt angesteuert

Code: Alles auswählen

oSheet = Doc.Sheets(Doc.currentcontroller.activeSheet.Name) 
wenn man ".Name" rausnimmt wird ein laufzeitfehler erzeugt. wie muß der code geändert werden, damit "Scheck" imm jeweils aktiven blatt gelöscht wird.?

grüße

klaus

Verfasst: Do, 06.04.2006 14:18
von Toxitom
Hey Klaus,
...wie muß der code geändert werden...

Code: Alles auswählen

oSheet = Doc.getSheets().getByName(Doc.currentcontroller.activeSheet.Name)
So erhälst du das aktuelle Blatt - ist aber riesig umständlich ???

Code: Alles auswählen

oSheet = oDoc.currentController.getAktiveSheet()
liefert das gleiche Objekt - und zwar direkt.

Gruss
Thomas

Verfasst: Do, 06.04.2006 14:36
von kannenklaus
halllo thomas,

danke für den tipp; klappt wunderbar getActiveSheet ohne k.

danke nochmals

grüße klaus