Seite 1 von 1
eigene Funktionen erstellen?
Verfasst: Mi, 05.10.2005 15:52
von mechiil
Hallo,
es gibt ja den sehr schönen funktionsautopiloten mit vielen vordefinierten funktionen. Kann ich die vorhandene formelsammlung eigentlich mit eigenen funktionen erweitern? Wenn ja, wie funktioniert das?
Schöne grüße

Verfasst: Mi, 05.10.2005 21:09
von Toxitom
Hey Mechiil,
Kann ich die vorhandene formelsammlung eigentlich mit eigenen funktionen erweitern? Wenn ja, wie funktioniert das?
Na ganz einfach: Du schreibst die Funktion in Basic - und speicherst Sie beispielsweise am Ort "Meine Makros". Dann werden Sie immer automatisch mitgeladen. Dann kannst du sie ganz normal aufrufen:
Beispiel einer selbstgeschriebenen Funktion:
Code: Alles auswählen
Function MEINEFUNKTION(a , b)
c= 2*a+2*b
MeineFunktion = 2*a+2*b
End Function
Jetzt schreibst du beispielsweise in A1 = 2, in A2 = 3 und in A3 deine Formel, also =meineFunktion(A1; A2) . Deien Formel erwartet zwei Parameter, die werden jetzt entsprechend bearbeitet und als Ergebnis kommt 10 raus, und das steht in der Zelle.
Und so kannst su beliebige Formeln erzeugen
Gruss
Thomas
Verfasst: Do, 06.10.2005 13:37
von mechiil
Super! Das klingt genau nach dem was ich suche
Die funktionen kann ich ja auch in jedem beliebigen texteditor schreiben...oder? Ist das vba-script?
Habe nur nicht genau rausbekommen wo ich die dann hinspeichern muss.
OpenOffice\share\basic\ ??
OpenOffice\user\basic\ ??
Einfach neues xba-file anlegen?
Oder liege ich da falsch?
Schöne Grüße
Verfasst: Do, 06.10.2005 17:52
von mechiil
So..habe nun den basic-editor entdeckt

)
extras -> makros -> makro...
Dann habe ich unter "makros verwalten" eine neue bibliothek erstellt "eigene".
Dann unter "eigene" ein neues Modul "math".
Angeklickt und auf "Bearbeiten". Dann öffnet sich der Basic-Editor.
Hier kann ich dann zB die obige funktion einfügen...
Sieht dann so aus:
Code: Alles auswählen
REM ***** BASIC *****
Function MeineFunktion(a, b)
MeineFunktion = 2*a+2*b
End Function
Sub Main
End Sub
Irgendwie funzt das aber nicht. Ich kann in Calc nun in eine Zelle beispielsweise eingeben =MeineFunktion(2,2). Dann müsste da ja 8 rauskommen. Bei mir steht da allerdings immer #WERT!. Ich nehme an ich habe da was falsch gemacht/verstanden?
MeineFunktion wird auch nicht im funktionsautopiloten angezeigt.
(wenn das das falsche forum ist bitte sagen

...dachte nur dass ich den thread weiterführen sollte.)
Verfasst: Do, 06.10.2005 20:15
von Toxitom
Hey mechiil
das Forum ist schon ok.
Ich kann in Calc nun in eine Zelle beispielsweise eingeben =MeineFunktion(2,2)
Kleiner Fehler: müsste heissen: =MeineFunktion(2;2) Parameter werden in Calc mit dem Strichpunkt (;) getrennt!!!.
Dann sollte es schon funktionieren.
In der Basic-Formel werden die Parameter übrigens mit Kommas getrennt, also aufpassen!
Gruss
Thomas
Verfasst: Do, 06.10.2005 22:10
von mechiil
Es klappt leider trotzdem nicht...
Ich nehme fast an, dass er die neue funktion gar nicht kennt. Muss ich da noch irgendwas aktualisieren oder so?
Es wundert mich nämlich auch, dass er sie mir eben nicht im funktionsautopiloten zur verfügung stellt.
Verfasst: Do, 06.10.2005 23:20
von Stephan
Ich nehme fast an, dass er die neue funktion gar nicht kennt.
Ich denke in der Zelle steht: #WERT! oder nicht? Bloß dann ist doch die Funktion bekannt, denn sonst stünde dort: #NAME?
Muss ich da noch irgendwas aktualisieren oder so?
Nein.
Es wundert mich nämlich auch, dass er sie mir eben nicht im funktionsautopiloten zur verfügung stellt.
das ginge nur mit AddIn, bei Funktionen in Basic ist der Zustand den Du beschreibst normal (es ist also
nicht wie in Excel)
Mir scheint der Fehler eher hier:
So..habe nun den basic-editor entdeckt )
extras -> makros -> makro...
Dann habe ich unter "makros verwalten" eine neue bibliothek erstellt "eigene".
Dann unter "eigene" ein neues Modul "math".
Angeklickt und auf "Bearbeiten". Dann öffnet sich der Basic-Editor.
Denn wie soll eine Funktion ausgeführt werden wenn das Modul doch garnicht geladen wird, oder lädst Du es? Obwohl mir da ein einfaches
als Autostartmakro im Moment auch nicht hilft.
Lösung sollte in jedem Fall sein die Funktionen in einem Modul der Bibliothek "Standard" von OOo zu erstellen.
Das sich andere für den genannten Zweck in der üblichen Form nicht laden lassen erstaunt mich zunächst, aber vielleicht übersehe ich was.
Gruß
Stephan
Verfasst: Fr, 07.10.2005 08:58
von Toxitom
Hey Stefan,
Das sich andere für den genannten Zweck in der üblichen Form nicht laden lassen erstaunt mich zunächst, aber vielleicht übersehe ich was.
Scheint tatsächlich ein Fehler zu sein. Die Funktion in einer anderen Bibliothek als "Standard" wird zwar erkannt (daher auch #WERT und automatische Umwandlung in Grossbuchstaben), aber nicht ausgeführt. Scheitert schon am Aufruf!
WErden wir mal beobachten.
Gruss
Thomas
Verfasst: Fr, 07.10.2005 12:34
von mechiil
Danke für eure hilfe. Habe die funktion nun in "Standard"->"Module1" erstellt und mit dem aufruf MeineFunktion(2;5) klappt es
(Wenn die parameter mit "," getrennt sind gibts einen basic-laufzeitfehler..."argument nicht optional"...denke aber das ist normal so)
Wenn ihr das rausfindet, wie man die eigenen funktionen auch in einer eigenen bibliothek sammeln kann wäre es klasse, wenn ihr das hier nochmal posten könntet.
Vielen dank nochmal...ihr habt mir sehr geholfen
ps.: Die sache mit den addins würde mich auch noch sehr interessieren...bin aber vorerst mal zufriedengestellt

Verfasst: Di, 11.10.2005 09:13
von Lenu
mechiil hat geschrieben:ps.: Die sache mit den addins würde mich auch noch sehr interessieren
Wenn Du im Hilfe-Index "Funktionen" eingibst und dort "benutzerdefinierte" anklickst, kommst Du zu einem kurzen Text mit Link zum Programmieren von Funktionen als AddIns.
Gruss
Verfasst: Di, 11.10.2005 14:11
von mechiil
Oh...da muss ich wohl relativ blind die hilfe durchforstet haben...
Soweit ich das sehe hat das aber nichts direkt mit addins zu tun? Trotzdem danke. Ist genau das was wir hier gerade rausgefunden haben nochmal schön zusammengefasst
Habe da aber auch schon einen netten abschnitt in der hilfe über "addins selbst programmieren" gefunden, der sich sehr spannend anhört. Momentan geht es aber auch über makros.
Nochmal vielen dank für eure nette hilfe.