eine neue function erstellen
Moderator: Moderatoren
Re: eine neue function erstellen
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.
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.
LG
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Re: eine neue function erstellen
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.
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
Hallo DPunch,
da habe ich mir ja was schönes eingebrockt ..........
wenn ich lese wie kompliziert bis unmöglich es ist diesbezüglich etwas zu erreichen,
ist es vielleicht einfacher ein "VorlagenAktualisierungsMakro" anzudenken oder so....
da habe ich mir ja was schönes eingebrockt ..........

wenn ich lese wie kompliziert bis unmöglich es ist diesbezüglich etwas zu erreichen,
ist es vielleicht einfacher ein "VorlagenAktualisierungsMakro" anzudenken oder so....
LG
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Re: eine neue function erstellen
Hallo clag,
ja ups!
Ich wusste doch das da noch was war. Und das hattest Du ja hier auch schon früher geschrieben.
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
ja ups!
Ich wusste doch das da noch was war. Und das hattest Du ja hier auch schon früher geschrieben.
Das gibt mir zu bedenken, denn das sollte eigentlich NICHT der Fall sein. Du meinst ja schon die Funktion =VORLAGE(), und nicht eine Dateivorlage.muss man jede einzelne Vorlage nach jeder Änderung erneut aktualisieren
Ich auch nicht.das verstehe ich nicht wirklich.
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
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.
wehr rächtschraipfähler findet khan si behalden
wehr rächtschraipfähler findet khan si behalden

Re: eine neue function erstellen
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.Aber hier darauf hinzuweisen was Excel schon lange kann und man sich auch von Calc wünschen würde, ist praktisch ein Tabubruch
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.
war hier meinerseits überhaupt nicht der fAll, ich habe sogar noch nachträglich ausführlich begründet warum ich Excel empfohlen hatteund wird hier leider oft nur mit sinnfreien Sprüchen wie "dann benutze doch Excel" kommentiert bzw abgestraft.
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
Wir sind hier auch in einem Forum und nicht in einer Werbeveranstaltung für OOo.und auch nicht der weiteren Verbreitung von OOo durch positive Berichte dient, braucht man nicht extra zu erwähnen, oder?
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.es spiegelt aber einiges des Antwortenden wieder
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.
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.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.
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
Ich hatte bespielsweise die C't zitiert mit:Irgendwer hatte hier Calc mal mit Ecel aus dem letzten Jahrhundert verglichen fand ich schon ganz lustig und auch treffend.
"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
Wirklich zum letzten Mal: es ist in OOo NICHT möglich.Damit meine ich, dass es theoretisch möglich ist, aber in der Praxis zu Fehlern führen kann.
(wobei ich das im Zweifel weder gut noch schlecht noch sonstwas finde, sondern rein den Fakt als Solchen benenne)
Ja, z.B.. DEswegen hatte ich Excel ja benannt.Also doch Excel.
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.Ich kann auch nicht verstehen weshalb man über eine Formel Aktionen bzw. Makros/UDF ausführen möchte.
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.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.
Gruß
Stephan
Re: eine neue function erstellen
z.B.: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.
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
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.Zurzeit helfe ich mir mit bedingtem Formatierung
ja sicher, deswegen schreibe ich das ja so genau hin - und genau deshalb nmuß man eben häufig genau sein.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?
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.
So ist das auch. Ich versuche es nun nochmals: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 !?
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