Hallo,
Andreas Borutta schrieb:
> Als Funktion
>
> Function FOO()
> FOO=D1*24*K1*MIN(J1;$D$4)
> End Function
>
> jedoch nicht.
>
> In der Zelle steht
> =FOO()
>
> Sieht jemand, wo mein Syntaxfehler liegt?
Es liegt kein Syntax- sondern eher sowas wie ein methodischer Fehler
vor. Du kannst nicht einfach so eine Tabellenfunktion (hier also MIN())
in Basic direkt benutzen.
Entweder du schreibst Dir ein Analoga in Basic, also beispielsweise
einlesen der Werte von J1 bis D4 in ein Array und Sortieren desselben
oder im Konkreten reicht hier auch ein If-Then:
Function FOO_X(x, y)
If x < y Then
tmp = x
ElseIf y < x Then
tmp = y
Else
tmp = x
End If
FOO_X = D1*24*K1*tmp
End Function
und in Tabellenzelle aufrufen mit:
=FOO_X(J1;$D$4)
oder Du nutzt die MIN()-Tabellenfunktion in Basic in geeigneter Weise:
Function FOO_XX(x, y)
oFunctionAccess = createUnoService("com.sun.star.sheet.FunctionAccess")
Dim args(1) As Variant
args(0) = x
args(1) = y
result = oFunctionAccess.callFunction("Min", args())
FOO_XX = D1*24*K1*result
End Function
und in Tabellenzelle aufrufen mit:
=FOO_XX(J1;$D$4)
In meinem Buch (in der dritten Auflage, siehe:
http://www.calc-info.de/informationen.htm#info3) findest Du ein Beispiel
zu dieser hier gezeigten Benutzung von
"com.sun.star.sheet.FunctionAccess" auf Seite 289.
Wer das Buch nicht hat kann sich die Buch-Seite auch online durchlesen
indem er den Link:
http://www.galileocomputing.de/1941?GPP=ooocalc
aufruft, dort nach unten scrollt und bei "Volltextsuche in diesem Buch"
den Suchbegriff "FunctionAccess" (ohne Anführungszeichen) verwendet, es
gibt dann nur einen Ergebnislink und der führt zu der Buch-Seite.
Ebenso finden sich Erläuterungen zu "com.sun.star.sheet.FunctionAccess"
in der StarBasic-FAQ von Michael:
http://www.dannenhoefer.de/faqstarbasic/WiekannmanFunktionenvonCalcverwe
nden..html
Natürlich stünde Dir es in Beiden Fällen auch frei x und y nicht als
Parsameter zu übergeben, sondern quasi statisch in die Funktion
einzubauen, also z.B.:
Function FOO_XXX()
oFunctionAccess = createUnoService("com.sun.star.sheet.FunctionAccess")
Dim args(1) As Variant
With ThisComponent.Sheets(0)
args(0) = .getCellRangeByName("J1").Value
args(1) = .getCellRangeByName("D4").Value
End With
result = oFunctionAccess.callFunction("Min", args())
FOO_XXX = D1*24*K1*result
End Function
und in Tabellenzelle aufrufen mit:
=FOO_XXX()
nur dürfte das eine weniger sinnvolle Art der Anwendung sein.
Gruß
Jörg
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]