Programmierung unter AOO/LO (StarBasic, Python, Java, ...)
Moderator: Moderatoren
Felixcate
Beiträge: 6 Registriert: Di, 04.04.2006 14:09
Beitrag
von Felixcate » Di, 04.04.2006 14:20
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!!
Stephan
********
Beiträge: 12368 Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin
Beitrag
von Stephan » Di, 04.04.2006 16:36
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
Felixcate
Beiträge: 6 Registriert: Di, 04.04.2006 14:09
Beitrag
von Felixcate » Di, 04.04.2006 16:59
hey danke funktioniert !! wie kann ich den bezug auf das aktuelle document machen also die tabelle welche gerade offen ist? Doc.Sheets( ???? )
Stephan
********
Beiträge: 12368 Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin
Beitrag
von Stephan » Di, 04.04.2006 19:07
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
kannenklaus
*****
Beiträge: 319 Registriert: Mi, 14.12.2005 08:08
Wohnort: freising - oder dort, wo das bier herkommt
Beitrag
von kannenklaus » Do, 06.04.2006 13:50
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
Toxitom
********
Beiträge: 3769 Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:
Beitrag
von Toxitom » Do, 06.04.2006 14:18
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
kannenklaus
*****
Beiträge: 319 Registriert: Mi, 14.12.2005 08:08
Wohnort: freising - oder dort, wo das bier herkommt
Beitrag
von kannenklaus » Do, 06.04.2006 14:36
halllo thomas,
danke für den tipp; klappt wunderbar getActiveSheet ohne k.
danke nochmals
grüße klaus