eigene Funktionen erstellen?

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

mechiil
*
Beiträge: 11
Registriert: Mo, 03.10.2005 01:31

eigene Funktionen erstellen?

Beitrag 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 :)
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag 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
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
mechiil
*
Beiträge: 11
Registriert: Mo, 03.10.2005 01:31

Beitrag von mechiil »

Super! Das klingt genau nach dem was ich suche :D
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
mechiil
*
Beiträge: 11
Registriert: Mo, 03.10.2005 01:31

Beitrag von mechiil »

So..habe nun den basic-editor entdeckt :o)
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 :wink: ...dachte nur dass ich den thread weiterführen sollte.)
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag 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
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
mechiil
*
Beiträge: 11
Registriert: Mo, 03.10.2005 01:31

Beitrag 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.
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag 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

Code: Alles auswählen

GlobalScope.BasicLibraries.LoadLibrary()
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
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag 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
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
mechiil
*
Beiträge: 11
Registriert: Mo, 03.10.2005 01:31

Beitrag von mechiil »

Danke für eure hilfe. Habe die funktion nun in "Standard"->"Module1" erstellt und mit dem aufruf MeineFunktion(2;5) klappt es :D

(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 :D

ps.: Die sache mit den addins würde mich auch noch sehr interessieren...bin aber vorerst mal zufriedengestellt :D
Lenu
*******
Beiträge: 1085
Registriert: Sa, 30.10.2004 09:24

Beitrag 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
mechiil
*
Beiträge: 11
Registriert: Mo, 03.10.2005 01:31

Beitrag 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 :D
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.
Antworten