Tabellenfunktion in StarBasic nutzen (...wieder einmal)

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Tabellenfunktion in StarBasic nutzen (...wieder einmal)

Beitrag von Stephan »

Hallo,

wieder einmal stoße ich auf Probleme beim Versuch eine bestimmte Tabellenfunktion in Starbasic zu nutzen, im Konkreten in einer benutzerdefinierten Funktion.

Meine benutzerdefinierte Funktion ist:

Code: Alles auswählen

Function fehlertypx(zelle As String)
	oFunctionAccess = createUnoService( "com.sun.star.sheet.FunctionAccess" )
	Dim args(0) As Variant
	args(0) = ThisComponent.CurrentController.ActiveSheet.getCellRangeByName(zelle)
	
	fehlertypx = oFunctionAccess.callFunction("ERRORTYPE", args()) 
End Function
und Diese funktioniert nicht, siehe anhängende Datei.

Weiß jemand Rat?

Hinweis:
es gab, hier im Forum, schon öfter berichtete Probleme mit com.sun.star.sheet.FunctionAccess, es wäre somit nicht völlig ungewöhnlich wenn es auch bei ERRORTYPE() so wäre, andererseits könnte es mit einem Trick vielleicht doch noch eine Lösung geben.


Gruß
Stephan
Dateianhänge
Fehlertyp_in_benutzerdefinierter_Funktion.ods
(8.87 KiB) 233-mal heruntergeladen
Helmut_S
*****
Beiträge: 221
Registriert: So, 29.10.2017 11:29

Re: Tabellenfunktion in StarBasic nutzen (...wieder einmal)

Beitrag von Helmut_S »

Hallo Stephan, ich weiß, man soll keine älteren Beiträge aufgreifen. Trotzdem erlaube ich mir einen Kommentar, weil mich der Beitrag von DIR etwas erstaunt hat. Ich bin darauf gestoßen, weil ich selbst nach etwas Ähnlichem auf der Suche bin, wo ich noch nicht durchblicke.
Ich wollte dir nur sagen (wahrscheinlich überflüssig) dass deine Funktion in deiner beigefügten Tabelle bei mir eigentlich tadellos funktioniert.
Habe darin ein paar Fehler eingebaut und siehe da, sie werden von der Funktion perfekt erkannt und mit dem entsprechenden Fehlercode angezeigt.
Fehlertyp_in_benutzerdefinierter_Funktion.ods
(9.67 KiB) 145-mal heruntergeladen
Gruß, Helmut
MX-Linux 23 KDE, Linux Mint 21 Cinnamon
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Tabellenfunktion in StarBasic nutzen (...wieder einmal)

Beitrag von Stephan »

Ich wollte dir nur sagen (wahrscheinlich überflüssig) dass deine Funktion in deiner beigefügten Tabelle bei mir eigentlich tadellos funktioniert.
kann ich leider nicht nachvollziehen, die betreffende Zelle bleibt bei mir leer, siehe Screenshot (aktuell getestet mit AOO 4.1.2 und LO 5.1.6)


Gruß
Stephan
Dateianhänge
benutzerdefinierte_Funktion_Test.gif
benutzerdefinierte_Funktion_Test.gif (10.22 KiB) 6067 mal betrachtet
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Tabellenfunktion in StarBasic nutzen (...wieder einmal)

Beitrag von Stephan »

werden die Anführungszeichen in A1(=FEHLERTYPX(C1)) entfernt, funktioniert das Makro.
tut mir leid, aber bei mir tut es das nicht.

der Aufruf mit:

=FEHLERTYPX(C1)

liefert die Rückgabe #DIV/0! und nicht, wie eigentlich richtig, 532.


Gruß
Stephan
Helmut_S
*****
Beiträge: 221
Registriert: So, 29.10.2017 11:29

Re: Tabellenfunktion in StarBasic nutzen (...wieder einmal)

Beitrag von Helmut_S »

Neben den Anführungszeichen habe ich auch das "X" bei Fehlertypx(C1) entfernt, dann funktionierte die Funktion auch in A1.
Gemeint habe ich allerdings die Spalten C - G
Funktion_Fehlertyp.png
Funktion_Fehlertyp.png (56.31 KiB) 6044 mal betrachtet
Gruß Helmut

Edit: Schon seltsam, wenn ich das X lösche erscheint in A1 532, - mit X steht dort #DIV/0
MX-Linux 23 KDE, Linux Mint 21 Cinnamon
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Tabellenfunktion in StarBasic nutzen (...wieder einmal)

Beitrag von Stephan »

Helmut_S hat geschrieben: Fr, 16.03.2018 21:48 Neben den Anführungszeichen habe ich auch das "X" bei Fehlertypx(C1) entfernt, dann funktionierte die Funktion auch in A1.
Gemeint habe ich allerdings die Spalten C - G
Funktion_Fehlertyp.png
Gruß Helmut

Edit: Schon seltsam, wenn ich das X lösche erscheint in A1 532, - mit X steht dort #DIV/0
irgendwie reden wir aneinander vorbei. Es gibt eine Tabellenfunktion namens FEHLERTYP() und diese funktioniert, außerdem gibt es eine benutzerdefinierte Funktion namens FEHLERTYPX() und diese funktioniert nicht richtig.

Wenn Du den Aufruf:

=FEHLERTYPX("C1")

in:

=FEHLERTYP(C1)

änderst, funktioniert das natürlich richtig, weil Du jetzt die Tabellenfunktion aufrufst und nicht mehr die benutzerdefinierte Funktion.


Gruß
Stephan
Helmut_S
*****
Beiträge: 221
Registriert: So, 29.10.2017 11:29

Re: Tabellenfunktion in StarBasic nutzen (...wieder einmal)

Beitrag von Helmut_S »

Oh je, ich bin davon ausgegangen, dass du das Makro geschrieben hast, weil es keine derartige Funktion von Hause aus gibt in LO-Calc, dass es eine solche Funktion bereits gibt, habe ich leider nicht geschnallt.
Gruß Helmut
MX-Linux 23 KDE, Linux Mint 21 Cinnamon
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Tabellenfunktion in StarBasic nutzen (...wieder einmal)

Beitrag von Stephan »

Oh je, ich bin davon ausgegangen, dass du das Makro geschrieben hast, weil es keine derartige Funktion von Hause aus gibt in LO-Calc, dass es eine solche Funktion bereits gibt, habe ich leider nicht geschnallt.
Ich habe die Funktion geschrieben um hier im Forum Hilfe zu bekommen wie ich sie zum Laufen kriege.

Der Grund war das ich in der Funktion später zusätzlich auf die Fehlernummer reagieren wollte, nur dazu muss die Funktion ja überhaupt erst einmal die richtige Fehlernummer liefern.

Ein prinzipieller Ersatz der benutzerdefinierten Funktion wäre es mit WENN() und FEHLERTYP() eine Formel zu schreiben die dann eine benutzerdefinierte Funktion beinhaltet die nur die zusätzlichen Dinge erledigt, nur hätte das den Nachteil dann wirklich nur per Funktion in einer Tabellenzelle zu funktionieren und nicht auch in einem gewöhnlichen Makro ohne Aufruf in einer Zelle.


Gruß
Stephan
mikeleb
*******
Beiträge: 1315
Registriert: Fr, 09.12.2011 16:50

Re: Tabellenfunktion in StarBasic nutzen (...wieder einmal)

Beitrag von mikeleb »

Hallo,
den Fehlercode kannst du doch auch direkt aus der Zelle lesen:

Code: Alles auswählen

ThisComponent.CurrentController.ActiveSheet.getCellRangeByName(zelle).Error
Das klärt allerdings immer noch nicht, warum der Tabellenfunktionsaufruf ins Leere läuft.
Gruß,
mikeleb
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Tabellenfunktion in StarBasic nutzen (...wieder einmal)

Beitrag von Stephan »

den Fehlercode kannst du doch auch direkt aus der Zelle lesen
danke, an diese Möglichkeit hatte ich nicht gedacht. Ja, das funktioniert.
Das klärt allerdings immer noch nicht, warum der Tabellenfunktionsaufruf ins Leere läuft.
Im Laufe der Jahre gibt es immer mal wieder Rückmeldungen die zeigen das die Nutzung der Tabellenfunktionen mittels Basic nicht immer klappt, eine Systematik erkenne ich aber nicht.


Gruß
Stephan
Antworten