eigene Funktion keine Aktualisierung
Moderator: Moderatoren
eigene Funktion keine Aktualisierung
hallo Kenner und und Könner
versuche mich gerade daran eigenen Funktionen zu erstellen.
Dabei ist mir aufgefallen, das die eigene Funktionen nicht automatisch aktualisiert werden
auch nicht bei F9 nur wen der Zelleninhalt echt editiert wurde wird nach dem Enter die Funktion ausgeführt,
danach nicht mehr, selbst wenn man Zellinhalte ändert auf die sich die Funktion bezieht.
Das kann doch so nicht gewollt sein oder?
Was klemmt da bzw was könnte die Ursache für das Verhalten sein?
versuche mich gerade daran eigenen Funktionen zu erstellen.
Dabei ist mir aufgefallen, das die eigene Funktionen nicht automatisch aktualisiert werden
auch nicht bei F9 nur wen der Zelleninhalt echt editiert wurde wird nach dem Enter die Funktion ausgeführt,
danach nicht mehr, selbst wenn man Zellinhalte ändert auf die sich die Funktion bezieht.
Das kann doch so nicht gewollt sein oder?
Was klemmt da bzw was könnte die Ursache für das Verhalten sein?
LG
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Re: eigene Funktion keine Aktualisierung
Schau mal im angehängten Beispiel. In Zelle B2 steht eine eigene Funktion, die sich auf A2 bezieht. Wenn ich in A2 etwas eintrage, erscheint eine Kopie in B2.
Wichtig: Die Funktion muss unter Standard stehen und Makros müssen erlaubt sein. Außerdem darf die Funktion keinen Fehler haben. Wenn es noch Klärungsbedarf gibt, lad mal einen Code-Snippet hoch.
Wichtig: Die Funktion muss unter Standard stehen und Makros müssen erlaubt sein. Außerdem darf die Funktion keinen Fehler haben. Wenn es noch Klärungsbedarf gibt, lad mal einen Code-Snippet hoch.
- Dateianhänge
-
- Meins.ods
- Beispiel eigene Funktion
- (8.8 KiB) 105-mal heruntergeladen
Win-XP32, LO4.1.1.2 (en)
Re: eigene Funktion keine Aktualisierung
Hallo
@clag
Postest du deine eigene Funktion ??
Karolus
@clag
Postest du deine eigene Funktion ??
Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Re: eigene Funktion keine Aktualisierung
Hallo CalcWeis
erstmal danke,
deine BspFunktion funktioniert und wird aktualisiert
Hi Karo
bin grade dabei
so steht die formel in der Zelle
=LISTEX("A1:B10")
gibt auch beim ersten Enter das richtige Ergebnis aus, eine Liste aller Zellinhalte aus dem gewählten Bereich mit ";" getrennt
wird dannach aber nicht mehr aktualisiert
Gespeichert wird in "Meine Makros & Dialoge_Standard_Funktionen"
erstmal danke,
deine BspFunktion funktioniert und wird aktualisiert
Hi Karo
bin grade dabei

Code: Alles auswählen
FUNCTION LISTEX(myra)
oSheet = Thiscomponent.CurrentController.ActiveSheet
oRange = oSheet.getcellrangebyname (myra)
for i = 0 to ubound(orange.data(0))
for k = 0 to ubound (orange.data)
oCell = oRange.getcellbyposition(i,k)
liste = liste & ";" & oCell.string
next k
next i
LISTEX=liste
End FUNCTION
=LISTEX("A1:B10")
gibt auch beim ersten Enter das richtige Ergebnis aus, eine Liste aller Zellinhalte aus dem gewählten Bereich mit ";" getrennt
wird dannach aber nicht mehr aktualisiert
Gespeichert wird in "Meine Makros & Dialoge_Standard_Funktionen"
LG
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Re: eigene Funktion keine Aktualisierung
Hallo
Calc "sieht" da nur den Text 'A1:B10' als Argument, zum Zellbereichsobject wird das erst in der Funktion aufgelöst.
Daher musst du per strg+shft+F9 aktualisieren.
Karolus
Calc "sieht" da nur den Text 'A1:B10' als Argument, zum Zellbereichsobject wird das erst in der Funktion aufgelöst.
Daher musst du per strg+shft+F9 aktualisieren.
Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Re: eigene Funktion keine Aktualisierung
ein Text ("A1:B10") ist kein Zellbereich(sobjekt) (A1:B10). Wenn die Funktion sich selbst aktualisieren soll darfst Du generell keinen Text übergeben und müßtest im Falle der benutzerdefinierten Funktion diese entsprechend umschreiben.
Ein Beipiel das das für Zahlen demonstriert findet sich in:
http://www.calc-info.de/files/Calc_StarBasic.pdf
Kapitel 10.2, Function summenTest()
Gruß
Stephan
Ein Beipiel das das für Zahlen demonstriert findet sich in:
http://www.calc-info.de/files/Calc_StarBasic.pdf
Kapitel 10.2, Function summenTest()
Gruß
Stephan
Re: eigene Funktion keine Aktualisierung
ah oh
hm
kann man das besser gestallten?
ich würde mir schon wünschen, das "meine Funktion" genau wie eine "Calc Funktion" immer bei einer Änderung in der Tabelle aktualisiert wird.
Wenn ich es ohne die "" also =LISTEX(A1:B10) versucht habe was mir viel besser gefällt, hat Basic immer gemeckert.
hm
kann man das besser gestallten?
ich würde mir schon wünschen, das "meine Funktion" genau wie eine "Calc Funktion" immer bei einer Änderung in der Tabelle aktualisiert wird.
Wenn ich es ohne die "" also =LISTEX(A1:B10) versucht habe was mir viel besser gefällt, hat Basic immer gemeckert.
LG
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Re: eigene Funktion keine Aktualisierung
Ja, und ich hatte Dir ein Beispiel bereits auf dem Silbertablet serviert.kann man das besser gestallten?
Stephan
Re: eigene Funktion keine Aktualisierung
Hallo
Aus der alten Bastelkiste:
Karolus
Aus der alten Bastelkiste:
Code: Alles auswählen
function multikette( abereich as variant , trennzeichen as string )
dim astring( ubound(abereich,1)* ubound(abereich,2) - 1 )
for i = 1 to ubound(abereich,1)
for si = 1 to ubound(abereich,2)
astring(iii) = abereich(i,si)
iii = iii +1
next si
next i
multikette = join(astring(),trennzeichen)
end function
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Re: eigene Funktion keine Aktualisierung
Hallo Stephan
sorry, ich hatte deine Antwort noch garnicht registriert, war nicht auf so hohe Antwortfrequenz eingestellt
werd jetzt aber gleich mal schauen ob ich das umsetzen kann was der Link aufzeigt
Danke
ha und für Karolus natürlich auch der zwischendurch aktiv war
also ALLEN gilt mein DANK
sorry, ich hatte deine Antwort noch garnicht registriert, war nicht auf so hohe Antwortfrequenz eingestellt

werd jetzt aber gleich mal schauen ob ich das umsetzen kann was der Link aufzeigt

Danke
ha und für Karolus natürlich auch der zwischendurch aktiv war
also ALLEN gilt mein DANK
LG
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Re: eigene Funktion keine Aktualisierung
Das Hauptproblem bei eigenen Funktionen ist meines Erachtens, dass keine Zellobjekte sondern nur Zellinhalte an die Funktion übergeben werden. Man schlägt sich also mit einem Wert oder einem Array herum und hat keine Möglichkeit, auf die Adresse der Zelle zurück zugreifen. Bei =myFunc(A1) und =myFunc(B2) sieht die Funktion also keinen Unterschied, sofern sich der Zellinhalt nicht unterscheidet.
Eine Option wäre möglicherweise die Funktion =myFunc(A1, "A1"), bei der der erste Parameter für eine Aktualisierung sorgt, der zweite lediglich als Referenz dient. Aber falls sich am Sheet etwas verändert, z.B. eine neue Zeile ganz oben eingefügt wird, dann ändert sich die Funktion automatisch in
=myFunc(B1, "A1") und erfüllt nicht mehr ihren Zweck. Besser ist es, den ganzen Bereich abzudecken, der in der Funktion ausgewertet werden soll, denn dann bekommt man ein Array über alle Werte und braucht sich nicht mehr mit Zellobjekten herum zu schlagen.
Eine Option wäre möglicherweise die Funktion =myFunc(A1, "A1"), bei der der erste Parameter für eine Aktualisierung sorgt, der zweite lediglich als Referenz dient. Aber falls sich am Sheet etwas verändert, z.B. eine neue Zeile ganz oben eingefügt wird, dann ändert sich die Funktion automatisch in
=myFunc(B1, "A1") und erfüllt nicht mehr ihren Zweck. Besser ist es, den ganzen Bereich abzudecken, der in der Funktion ausgewertet werden soll, denn dann bekommt man ein Array über alle Werte und braucht sich nicht mehr mit Zellobjekten herum zu schlagen.
Win-XP32, LO4.1.1.2 (en)
Re: eigene Funktion keine Aktualisierung
Hallo
:table::XCellRange festlegen. siehe hier
Karolus
Dafür müstest du deine Funktion als AddIn in eine xyz.oxt stecken und in der Schnittstellen-definition ( im ..idl File ) das Argument als ::com::sun:Das Hauptproblem bei eigenen Funktionen ist meines Erachtens, dass keine Zellobjekte sondern nur Zellinhalte an die Funktion übergeben werden
Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)