Also kann man keine neue Fkt. erstellen
doch kann man, ich habe auch nichts Gegenteiliges geschrieben
und als Makro ist der Effekt verschwindend
Welcher Effekt?
Ich habe mal gelesen (wo?)
z.B. in der StarBasic-FAQ:
http://www.dannenhoefer.de/faqstarbasic ... l#Zweig229
dass man mit Hilfe der engl. (org.) Fkt.-bezeichnungen doe Originalfkt. von OO in Makros einbauen kann
Ja, das kann man, nur ich verstehe den Zusammenhang nicht. Jede Nutzung dieser Funktionen in Makros (genauer: in Basic-Makros) erfolgt per Basic-Code und dieser ist langsam, da nutzt es nichts wenn die Funktionen ansich schnell sind.
Ich hatte deutlich geschrieben das Funktionen (unter den Nebenbedingungen die hier gelten) nur Rückgabewerte liefern und keine Rückgabeaktionen und ich sehe dann keinen Weg wie eine solche Funktion schneller sein könnte als die Orginalfunktion, da selbst ein seeeehr kurzes Makro zumindest Wertzuweisungen an die, dann schnellen Funktionen, enthalten müßte, und das als langsamen Basic-Code.
Bestenfalls könnte ich mir als vorstellen das solche Funktionen nicht merklich langsamer sind, wohingegen sie von der Sache her immer langsamer sein müssen, weil sich ja die Gesamtzeit zusammensetzt aus der (im Makro ggf. referenzierten) schnellen Tabellenfunktion und dem notwendigen umgebenden Basic-Code.
Michael beschreibt unter besagtem Link z.B. die KGV-Funktion und man könte das als benutzerdefinierte Funktion schreiben als:
Code: Alles auswählen
Function mein_KGV(a,b,c)
oFunctionAccess = createUnoService( "com.sun.star.sheet.FunctionAccess" )
Dim args(2) As Variant
args(0) = a
args(1) = b
args(2) = c
End Fuction
und aufrufen in der Tabellenzelle mit:
=mein_KGV(A1;A2;A3)
und mir ist nicht klar wie das, auch nur theoretisch, schneller sein könnte als der direkte Aufruf mittels:
=KGV(A1;A2;A3)
Wie man hingegen diese Funktion intern als auf mehr als eine Zelle anwenden wolle UND das als einer Zelle aufrufen kann weiß ich nicht.
Als Makroaufruf, z.b. über eine Schaltfläche oder Tastenkombination ginge das natürlich, aber auch hier bleibt mir unklar warum das schneller sein könnte da inter der KGV_Aufruf auch im makro mehrfach erfolgen müßte.
Gruß
Stephan
[quote]Also kann man keine neue Fkt. erstellen[/quote]
doch kann man, ich habe auch nichts Gegenteiliges geschrieben
[quote]und als Makro ist der Effekt verschwindend[/quote]
Welcher Effekt?
[quote]Ich habe mal gelesen (wo?)[/quote]
z.B. in der StarBasic-FAQ:
http://www.dannenhoefer.de/faqstarbasic/WiekannmanFunktionenvonCalcverwenden..html#Zweig229
[quote]dass man mit Hilfe der engl. (org.) Fkt.-bezeichnungen doe Originalfkt. von OO in Makros einbauen kann[/quote]
Ja, das kann man, nur ich verstehe den Zusammenhang nicht. Jede Nutzung dieser Funktionen in Makros (genauer: in Basic-Makros) erfolgt per Basic-Code und dieser ist langsam, da nutzt es nichts wenn die Funktionen ansich schnell sind.
Ich hatte deutlich geschrieben das Funktionen (unter den Nebenbedingungen die hier gelten) nur Rückgabewerte liefern und keine Rückgabeaktionen und ich sehe dann keinen Weg wie eine solche Funktion schneller sein könnte als die Orginalfunktion, da selbst ein seeeehr kurzes Makro zumindest Wertzuweisungen an die, dann schnellen Funktionen, enthalten müßte, und das als langsamen Basic-Code.
Bestenfalls könnte ich mir als vorstellen das solche Funktionen nicht merklich langsamer sind, wohingegen sie von der Sache her immer langsamer sein müssen, weil sich ja die Gesamtzeit zusammensetzt aus der (im Makro ggf. referenzierten) schnellen Tabellenfunktion und dem notwendigen umgebenden Basic-Code.
Michael beschreibt unter besagtem Link z.B. die KGV-Funktion und man könte das als benutzerdefinierte Funktion schreiben als:
[code]Function mein_KGV(a,b,c)
oFunctionAccess = createUnoService( "com.sun.star.sheet.FunctionAccess" )
Dim args(2) As Variant
args(0) = a
args(1) = b
args(2) = c
End Fuction[/code]
und aufrufen in der Tabellenzelle mit:
=mein_KGV(A1;A2;A3)
und mir ist nicht klar wie das, auch nur theoretisch, schneller sein könnte als der direkte Aufruf mittels:
=KGV(A1;A2;A3)
Wie man hingegen diese Funktion intern als auf mehr als eine Zelle anwenden wolle UND das als einer Zelle aufrufen kann weiß ich nicht.
Als Makroaufruf, z.b. über eine Schaltfläche oder Tastenkombination ginge das natürlich, aber auch hier bleibt mir unklar warum das schneller sein könnte da inter der KGV_Aufruf auch im makro mehrfach erfolgen müßte.
Gruß
Stephan