von Toxitom » Do, 01.03.2007 17:26
Hey Nedel,
Und? Funktioniert dein Code so zunächst?
Das mit dem Cell.offset gibt es nicht in OOo Basic, das realisiert du dann eben manuell. Im Grunde verschiebt es ja nur die splate um 1?
Dann addierst du zu dem Column-Wert eben den Offset hinzu
Aber, wenn ich das Excel Makro richtig interpretiere, so lautet das:
Erhöhe den Zähler um 1 wenn
in der Zelle ein bestimmter Text ("Name") vorkommt und gleichzeitig in der Zelle daneben der "Typ" aufgelistet wird?
(finde leider die Funktion StrComp() in meinem Excelbuch nicht, schätze aber, sie vergleicht, ob die beiden Strings gleich sind?)
Dann kannst du das eigentlich auch direkt umsetzen:
Code: Alles auswählen
Function doIt(name As String, BereichString as String , Typ As String, bereich2 as Object) As String
Bereich = ThisComponent.CurrentController.ActiveSheet.getCellRangeByName(BereichString)
counter = 0
for nRow = Bereich.StartRow To Bereich.EndRow
for nCol = Bereich.StartColumn To Bereich.EndColumn
cell = ThisComponent.CurrentController.ActiveSheet.getCellByPosition(nCol, nRow)
cell2 = ThisComponent.CurrentController.ActiveSheet.getCellByPosition(nCol+1, nRow)
If (InStr(cell.string, name) > 0) AND StrComp(cell2.string, Typ) Then
counter = counter + 1
End If
next
next
doIt = name
End Function
Noch etwas: Das Zellobjekt kann drei Inhaltstypen beinhalten: Werte (value), Texte (String) oder Formeln (formula). In OOo musst du schon den richtigen Typ abfragen, der Typ "value" liefert dir Null (0) zurück, wenn in der Zelle Texte drin stehen!
Viele Grüße
Thomas
Hey Nedel,
Und? Funktioniert dein Code so zunächst?
Das mit dem Cell.offset gibt es nicht in OOo Basic, das realisiert du dann eben manuell. Im Grunde verschiebt es ja nur die splate um 1?
Dann addierst du zu dem Column-Wert eben den Offset hinzu :-)
Aber, wenn ich das Excel Makro richtig interpretiere, so lautet das:
Erhöhe den Zähler um 1 wenn
in der Zelle ein bestimmter Text ("Name") vorkommt und gleichzeitig in der Zelle daneben der "Typ" aufgelistet wird?
(finde leider die Funktion StrComp() in meinem Excelbuch nicht, schätze aber, sie vergleicht, ob die beiden Strings gleich sind?)
Dann kannst du das eigentlich auch direkt umsetzen:
[code]Function doIt(name As String, BereichString as String , Typ As String, bereich2 as Object) As String
Bereich = ThisComponent.CurrentController.ActiveSheet.getCellRangeByName(BereichString)
counter = 0
for nRow = Bereich.StartRow To Bereich.EndRow
for nCol = Bereich.StartColumn To Bereich.EndColumn
cell = ThisComponent.CurrentController.ActiveSheet.getCellByPosition(nCol, nRow)
cell2 = ThisComponent.CurrentController.ActiveSheet.getCellByPosition(nCol+1, nRow)
If (InStr(cell.string, name) > 0) AND StrComp(cell2.string, Typ) Then
counter = counter + 1
End If
next
next
doIt = name
End Function
[/code]
Noch etwas: Das Zellobjekt kann drei Inhaltstypen beinhalten: Werte (value), Texte (String) oder Formeln (formula). In OOo musst du schon den richtigen Typ abfragen, der Typ "value" liefert dir Null (0) zurück, wenn in der Zelle Texte drin stehen!
Viele Grüße
Thomas