eine neue function erstellen

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: eine neue function erstellen

Re: eine neue function erstellen

von Stephan » Di, 06.07.2010 20:06

Zurzeit helfe ich mir mit bedingtem Formatierung
Meiner Einschätzung nach ist das kein behelf, sondern der zu bevorzugende Weg WENN die Alternativen Listener und bedingte Formatierung sind - das heißt also nicht das es mit Listener nicht geht, aber es heißt das der, für die durch Dich genannten Dinge unnötig kompliziert und ggf. instabil ist.
Wäre das nicht ein Punkt wo man zum tricksen ansetzen könnte, in dem man diese Funktion in einer anderen Tabellen-Blatt aufruft bzw die Zielzelle auf einem anderen Tabellen-Blatt liegt?
ja sicher, deswegen schreibe ich das ja so genau hin - und genau deshalb nmuß man eben häufig genau sein.

Im Konkreten (Du willst eine harte Formatierung der Zelle steuern), lässt sich da jedoch eher nichts tricksen, da du zumindest bei jeder Änderung zwei Tabellenblätter hintereinander aktiv schalten müßtest, was wohl wahrlich ziemlich unergonomisch wäre.
Denn an sich macht das "so geht es nicht Beispiel" wie es Stephan aufgezeigt hat, genau das was ich angedacht hatte, nur nicht auf dem gleichen Tabellen-Blatt.
So habe ich das jetzt jedenfalls verstanden !?
So ist das auch. Ich versuche es nun nochmals:

Eine benutzerdefinierte Funktion, welche in einer Calc-Zelle aufgerufen wird, kann nur Rückgabewerte und keine Rückgabeaktionen für Zellen im selben Tabellenblatt liefern.

Rückgabewerte sind dabei ausschließlich Zahlen oder Text (und Boolsche Werte (0/1 FALSCH/WAHR), falls man boolsche Werte gesondert benennen will), Rückgabeaktionen sind quasi alles Andere.
Rückgabeaktionen sind jedoch möglich für 'Nicht-Zellen' z.B. lassen sich die Tabellennamen (in den Reitern) mittels benutzerdefinierter Funktion, aufgerufen in Zelle, im selben tabellenblatt ändern.
Auch lassen sich mit Funktionen, welche in Zellen aufgerufen werden, Rückgabeaktionen für Zellen durchführen, welche sich nicht auf dem aufrufenden Tabellenblatt, sondern auf einen anderen Tabellenblatt befinden. Die Zweckmäßigkeit des Ganzen ist in Praxis ziemlich begrenzt, weil es hierbei ja unvermeidlich um Dinge geht in in einem, zum Zeitpunkt der Aktion, nicht sichtbaren tabellenblatt stattfinden, da die automatische Neuberechnung für Formeln immer nur für das sichtbare (das aktive) Tabellenblatt stattfindet, das mit der Rückgabeaktion deshalb zwangsweise ein nichtaktives sein muß.


Alles das ist aber irgendwie Prosa (und diese Kritik zum meiner eigenen Aussage gestatte mir), denn inhaltlich habe ich das alles bereits gesagt.



Gruß
Stephan

Re: eine neue function erstellen

von Stephan » Di, 06.07.2010 20:05

dann benenne doch aus deiner Sicht bitte einmal eine Funktion/Vorgehensweise in Calc die einer vergleichbaren in Excel überlegen ist,
weil sie anwendungsfreundlicher oder warum auch immer besser ist.
z.B.:
Die durch Dich kritisierten Zellvorlagen sind in Calc vorteilhaft weil sie Vererbungen zulassen, was in Excel nicht der Fall ist, obwohl es in Excel ebenfalls Zellvorlagen gibt (obwohl das kaum bekannt ist).

Ob Zellvorlagen hingegen anwendungsfreundlich sind mag jeder selbst entscheiden, die Wahrheit ist aber meines Erachtens das Zellvorlagen meist nur deshalb negativ beurteilt werden weil man sie nicht wirklich kennt und richtig nutzt.
Gerade im kommerziellen Einsatz sind Zellvorlagen u.U. sehr arbeitserleichternd, allerdings nur wenn man einmalig entsprechende, konkret auf die Erfordernise angepasste, Zellvorlagen erstellt und dann immer wieder nutzt. Wenn man nur die Zellvorlagen nutzt die OOo 'out of the box' mitbringt wird ein effizientes Arbeiten zwangsläufig scheitern und sich der Eindruck verstärken Zellvorlagen seien schlecht.



Gruß
Stephan

Re: eine neue function erstellen

von Stephan » Di, 06.07.2010 20:04

Damit meine ich, dass es theoretisch möglich ist, aber in der Praxis zu Fehlern führen kann.
Wirklich zum letzten Mal: es ist in OOo NICHT möglich.

(wobei ich das im Zweifel weder gut noch schlecht noch sonstwas finde, sondern rein den Fakt als Solchen benenne)
Also doch Excel.
Ja, z.B.. DEswegen hatte ich Excel ja benannt.
Ich kann auch nicht verstehen weshalb man über eine Formel Aktionen bzw. Makros/UDF ausführen möchte.
ich sage an der Stelle weder ja noch nein, einzig eben kann ich nur sagen wie es in Calc ist und da geht es nun einmal nicht eine Aktion auszuführen.
Der Listener ist (in diesem Fall) das Gegenstück zu Excels "Worksheet_Change". Damit kann man dann auch Aktionen nach Zelleingaben auslösen oder "Zelländerungen" veranlassen.
Ja, ich habe ja auch ausdrücklich NICHT verneint das ein listener möglich wäre, allein ist er für die konkret benannten Dinge von clag nicht zwingend nötig und ich würde deshalb dazu raten (sowohl wegen Stabilität als auch Einfachheit) im KOnkreten eine bedingte formatierung zu nutzen.



Gruß
Stephan

Re: eine neue function erstellen

von Stephan » Di, 06.07.2010 20:02

Aber hier darauf hinzuweisen was Excel schon lange kann und man sich auch von Calc wünschen würde, ist praktisch ein Tabubruch
Nein, es ist nur Etwas was Calc in Summe nicht erfüllen kann, denn es gibt Millionen nUtzer mit tausenden Wünschen die letztlich alle irgendwioe gleichberechtigt sind und wenn man sie deshalb gleich behanddeelt und in Calc einbaut hat man dann in mehreren Jahren ein Calc was so ist wie Excel schon heute ist zu einem unglaublichen Kosten-/Arbeits-/Zeitaufwand.
Wirtschaftlich wäre es da günstiger jedem der Excel-Funktionen braucht notfalls ein Excel zu sponseren, zumal ihm dann die funktionen sofort zur Verfügung stünden.
Man kann dcas aber alles viel einfacher sagen: in Calc bzw. OOo wird das eingebaut werden für was sich Freiwillige finden die es tun, wobei es egal ist ob das Bezahle Freiwillige in Firmen sind oder ehrenamtliche Freiwillige. Derzeitig wird OOo überwiegend von Angestellten von Sun/Oracle programmiert.
und wird hier leider oft nur mit sinnfreien Sprüchen wie "dann benutze doch Excel" kommentiert bzw abgestraft.
war hier meinerseits überhaupt nicht der fAll, ich habe sogar noch nachträglich ausführlich begründet warum ich Excel empfohlen hatte
dass solche Antworten wenig konstruktiv


Nicht kontruktiv wäre es wenn ich auf Calc beharren würde und dann quasi behaupten würde was Calc nicht kann sei ohnehin nicht nötig
und auch nicht der weiteren Verbreitung von OOo durch positive Berichte dient, braucht man nicht extra zu erwähnen, oder?
Wir sind hier auch in einem Forum und nicht in einer Werbeveranstaltung für OOo.
es spiegelt aber einiges des Antwortenden wieder
Habe ich kein Problem damit, ganz im Gegenteil ich würde mich lächerlich machen wenn ich nicht auf die technisch beste Variante verweisen würde.
Ich mache diese Dinge nämlich auch beruflich, da mutmaßt jedoch keiner wenn ich sage man solle Excel benutzen weil Calc etwas nicht kann das ich flappsige Antworten geben würde oder das ich die Verbreitung von OOo verhindern wollte oder Ähnliches.
Aber hier ist das OOo Forum und meine frage war, wie kann ich das angedachte mit Calc realisieren und in meiner Signatur steht auch nichts von MSO.
Dies betrachtend kann ich nichts Sinnvolles in der Antwort "dann benutze doch Excel" erkennen, vielmehr erweckt es den Anschein, ein unbeliebtes Thema soll abgewürgt werden.
Hier soll nichts abgewürgt werden, auch das wiederhole ich nun zum x-ten Mal. Mir persönlich ist es jedoch ein Anliegen die Dinge neutral fachlich zu bewerten und ebend nicht davon auszugehen das OOo das beste Programm der WElt wäre.

ES gint nun einmal andere Programme, wie das hier in REde Stehende Excel, die abhängig von derer konkreten Aufgabe besser geeignet sein können.

Man kann das aber alles viel einfacher sagen.
wenn Du Veränderungen in OOo willst MUSST Du Dich an das OOo-PROJEKT wenden. Das Forum hier ist nun einmal nur ein privat betriebenes Forum, und kein Bestandteil des OOo-Projektes und niemand hier hat irgendeinen Einfluss auf die Entwicklung von OOo
- weder nimmt jemand DEine hier im Forum geäußerten Wünsche zur Kenntnis, noch kann jemand hier die Umsetzung DEiner Wünsche verhindern.
Du wirst also wenn Du Veränderungen im Programmpaket OOo willst, ganz normal wieder jeder Andere einen issue mit DEinem Wunsch schreiben müssen:
viewtopic.php?f=3&t=12975
Irgendwer hatte hier Calc mal mit Ecel aus dem letzten Jahrhundert verglichen fand ich schon ganz lustig und auch treffend.
Ich hatte bespielsweise die C't zitiert mit:

"Während sich die Komponenten für Text und Präsentationen in ihren Funktionen kaum voneinander unterscheiden, ist die Tabellenkalkulation von MS Office dem OpenOffice-Pendant in vielen Bereichen um Längen voraus und bleibt für fortgeschrittene Anwender die erste Wahl."

siehe:
viewtopic.php?f=3&t=20180&start=30#p87682



Gruß
Stephan

Re: eine neue function erstellen

von balu » Di, 06.07.2010 19:36

Hallo clag,

ja ups!
Ich wusste doch das da noch was war. Und das hattest Du ja hier auch schon früher geschrieben.
muss man jede einzelne Vorlage nach jeder Änderung erneut aktualisieren
Das gibt mir zu bedenken, denn das sollte eigentlich NICHT der Fall sein. Du meinst ja schon die Funktion =VORLAGE(), und nicht eine Dateivorlage.
das verstehe ich nicht wirklich.
Ich auch nicht.

VORLAGE gehört mit zu meinen Lieblingsfunktionen, ist halt so. Mir fällt jetzt aber auf die schnelle keine Situation ein, indem erst nach einer Aktualisierung die vorgenommenen Änderungen greifen. Normalerweise geschieht das augenblicklich, es sei denn, es ist eine seeeehr große Datei mit extrem vielen Bedingten Formatierungen und noch extrem viele VORLAGE Funktionen. So eine Datei habe ich mal erstellt, aber selbst dort greifen die Änderungen innerhalb weniger Sekunden ohne zu Aktualisieren.

Normal sollte eigentlich sein, dass wenn man im Formatvolagen Fenster (F11) eine bestimmte Vorlage ändert z.B. Hintergrundfarbe und die Zellvorlage mit OK verlässt, diese Änderung automatisch und sofort übernommen wird. Und das in allen Zellen in denen diese VORLAGE angewendet wird. Vorausgesetzt, dass die vorgenommenen Änderungen eine Vorlage betreffen die auch aktiv per Formel(Funktion) zugewiesen SIND. Das heisst, wenn durch eine WENN-Funktion von zwei verschiedenen Situationen nur die erste greift, und die dazugehörige VORLAGE, kann natürlich die zweite Situation mit der dazugehörigen VORLAGE natürlich nicht greifen. Und wenn nur die zweite VORLAGE geändert wurde so kann sie natürlich nicht aktiv werden, da ja die erste aktiviert ist.

Öööhm! Alles verstanden?

In dem verlinkten Thread von mir ist eine kleine Beispieldatei mit den Namen Ampel.ods vorhanden, mit der Du ja ruhig mal experimentieren kannst. Musst nicht lange suchen, hier ist der betreffende Beitrag.
Wenn die Datei bei dir nicht funktioniert, empfehle ich einen neuen Thread zu eröffnen um das Thema genauer zu untersuchen.


Gruß
balu

Re: eine neue function erstellen

von clag » Di, 06.07.2010 19:10

Hallo DPunch,

da habe ich mir ja was schönes eingebrockt .......... :lol:

wenn ich lese wie kompliziert bis unmöglich es ist diesbezüglich etwas zu erreichen,
ist es vielleicht einfacher ein "VorlagenAktualisierungsMakro" anzudenken oder so....

Re: eine neue function erstellen

von DPunch » Di, 06.07.2010 18:59

Aloha

Nun, ob das pflegen von x "bedingten Formatierungen" per benutzerdefinierten Funktionen so viel weniger Aufwand ist, weiss ich nicht, wenn Du da eine z.B. eine Farbe ändern willst, musst Du ja auch jede einzelne Funktion ala
=WENN(A1>100;hgfarbe(A1:A5;FF0000);Wenn(A1>50;hgfarbe(A1:A5;00FF00);hgfarbe(A1:A5;FFFF00))
entsprechend ändern.

Aber machbar ist das auf jeden Fall, die potenziellen Änderungen und die Funktionen müssen allerdings wie Du schon festgestellt hast auf verschiedenen Tabellenblättern liegen und das Ganze ist auch dadurch etwas umständlich, dass man benutzerdefinierten Funktionen keine UNO-Objekte wie zum Beispiel Cell-Ranges übergeben kann.
Ein Funktionsaufruf
hgfarbe(A1:A5;FF0000)
würde also nicht die CellRange A1:A5 liefern, sondern nur das DatenArray aus diesem Bereich. Da müsste man halt dementsprechend Workarounds entwickeln.

Re: eine neue function erstellen

von clag » Di, 06.07.2010 18:43

Hallo DPunch,

meine ursprüngliche Idee war eine direkte Möglichkeit zu haben einer Zelle werte abhängig ein Format zuzuweisen

bei den Vorlagen bin ich durch umständlichen Art wenig angetan es zu nutzen, besonders wenn einem die ersonnene Formate nicht gefallen, muss man jede einzelne Vorlage nach jeder Änderung erneut aktualisieren, das verstehe ich nicht wirklich. Wenn ich schon eine Zelle als Vorlage definiere, dann erwarte ich, dass das in der Vorlagezelle angezeigte Format angewendet wird.

Dem ist aber leider nicht so, das empfinde ich als unlogisch und war Grund für mein Anliegen.

Re: eine neue function erstellen

von DPunch » Di, 06.07.2010 18:17

Aloha
clag hat geschrieben:Wäre das nicht ein Punkt wo man zum tricksen ansetzen könnte, in dem man diese Funktion in einer anderen Tabellen-Blatt aufruft bzw die Zielzelle auf einem anderen Tabellen-Blatt liegt?
Natürlich würde das gehen.
Aber mir ist ehrlich gesagt auch noch nicht ganz klar geworden, warum Du das nicht einfach wie vorgeschlagen mit bedingten Formatierungen umsetzt.
So bräuchtest Du ein extra Tabellenblatt, in dem Deine "bedingten Formatierungen" per Makro hinterlegst.

Re: eine neue function erstellen

von clag » Mo, 05.07.2010 21:08

Hallo Mumpel,

dein Angebot etwas mit einem Listener zu kreiren finde ich klasse und ich würde mir ganz bestimmt gern ansehen wollen wie so eine Lösung aussehen/funktionieren könnte, da meine OOoBasic-Kenntnisse nicht reichen um so eine Idee umzusetzen.

Zurzeit helfe ich mir mit bedingtem Formatierung und Formeln mit der +VORLAGE() Erweiterung.

Beim durchlesen einiger Texte ist mir aber aufgefallen das immer nur die Rede davon ist, das das Tabellenblatt der aufrufenden Zelle schreibgeschützt ist und deswegen andere Zellen dieser Tabelle nicht geändert werden können.
Wäre das nicht ein Punkt wo man zum tricksen ansetzen könnte, in dem man diese Funktion in einer anderen Tabellen-Blatt aufruft bzw die Zielzelle auf einem anderen Tabellen-Blatt liegt?

Denn an sich macht das "so geht es nicht Beispiel" wie es Stephan aufgezeigt hat, genau das was ich angedacht hatte, nur nicht auf dem gleichen Tabellen-Blatt.
So habe ich das jetzt jedenfalls verstanden !?

Re: eine neue function erstellen

von clag » Mo, 05.07.2010 20:51

Hallo Freedom,

Also wenn das hier ein universelles Forum für Tabellenkalkulation wäre und ich gefragt hätte mit welchem Programm kann ich diese oder jene Aufgabe lösen, hätte die Antwort sicher ihre Berechtigung gehabt.
Aber hier ist das OOo Forum und meine frage war, wie kann ich das angedachte mit Calc realisieren und in meiner Signatur steht auch nichts von MSO.
Dies betrachtend kann ich nichts Sinnvolles in der Antwort "dann benutze doch Excel" erkennen, vielmehr erweckt es den Anschein, ein unbeliebtes Thema soll abgewürgt werden.

Ich habe also nicht die Wahl und meine Fragen sind immer auf Calc bezogen.

@ Balu
nein, ich habe mich noch nicht so intensiv mit den Themen hinter den Links beschäftigt, da es hauptsächlich um Vorlagen geht, aber genau die wollte ich doch vermeiden.

@ mompel
ok, eine sehr spezielle Funktion

Re: eine neue function erstellen

von mumpel » Mo, 05.07.2010 20:46

Wir können hier noch so lange diskutieren, ohne zu einem Ergebnis zu kommen. In Excel gibt es nun mal Dinge die es in Calc nicht gibt, und umgekehrt.

@ clag

Bist Du nun zu einem (akzeptablen) Ergebnis gekommen? Nutzt Du nun eine bedingte Formatierung? Oder soll Dir jemand mit einem Listener helfen (falls das überhaupt wie gewünscht funktionieren sollte)? Aber mach das doch einfach mit einer bedingten Formatierung. Ist einfacher, wie schon Stephan sagt.

Re: eine neue function erstellen

von balu » Mo, 05.07.2010 16:56

Hallo clag,

ja wat denn dat hier? Jetzt auch noch voll OT
dann benenne doch aus deiner Sicht bitte einmal eine Funktion/Vorgehensweise in Calc die einer vergleichbaren in Excel überlegen ist,
weil sie anwendungsfreundlicher oder warum auch immer besser ist.
Wolln aber jetzt nicht darüber streiten, oder diskutieren :wink:.

Ich kenne da aber auch noch ein paar Funktionen die in Calc vorhanden, bzw. besser sind.
-> KALENDERWOCHE Wird in Calc nach ISO 8601 berechnet, in Excel nach dem Amerikanischem System. In Excel muss man dafür Hand anlegen um nach der ISO zu rechnen, am besten mit VBA.
-> OSTERSONNTAG Gibt es nicht in Excel.
-> VORLAGE Gibt es auch nicht in Excel.

Ich will aber Excel deswegen jetzt nicht schlecht machen, nur die ersten beiden würde ich mir in Excel noch zusätzlich Wünschen. Damit wäre ich aber bestimmt nicht alleine.
Ich beziehe mich auf Excel 2003.

Das solls jetzt aber auch gewesen sein.

Clag, Frage.
Wie kommst Du mit meinen verlinkten Thread zum Thema VORLAGE voran?


Gruß
balu

Re: eine neue function erstellen

von mumpel » Mo, 05.07.2010 14:54

Istschaltjahr. Diese Funktion gibt es in Excel erst gar nicht. In Excel muss man diese erst per VBA nachrüsten.

Re: eine neue function erstellen

von clag » Mo, 05.07.2010 11:00

Hi mumpel,

ich habe gerade in deiner Signatur gesehen du hast eine Office Vollausstattung 8)

dann benenne doch aus deiner Sicht bitte einmal eine Funktion/Vorgehensweise in Calc die einer vergleichbaren in Excel überlegen ist,
weil sie anwendungsfreundlicher oder warum auch immer besser ist.

Nach oben