Seite 1 von 1

Tabellenfunktion in StarBasic nutzen (...wieder einmal)

Verfasst: So, 30.07.2017 12:11
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

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

Verfasst: Fr, 16.03.2018 19:07
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

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

Verfasst: Fr, 16.03.2018 21:20
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

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

Verfasst: Fr, 16.03.2018 21:35
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

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

Verfasst: Fr, 16.03.2018 21:48
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) 6039 mal betrachtet
Gruß Helmut

Edit: Schon seltsam, wenn ich das X lösche erscheint in A1 532, - mit X steht dort #DIV/0

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

Verfasst: Fr, 16.03.2018 22:15
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

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

Verfasst: Fr, 16.03.2018 22:25
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

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

Verfasst: Fr, 16.03.2018 22:57
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

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

Verfasst: Sa, 17.03.2018 22:37
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.

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

Verfasst: So, 18.03.2018 09:15
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