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!!

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 ???
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