Tabellenfunktion in StarBasic nutzen (...wieder einmal)

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

Moderator: Moderatoren

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

Tabellenfunktion in StarBasic nutzen (...wieder einmal)

Beitrag von Stephan » So, 30.07.2017 12:11

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) 132-mal heruntergeladen

Helmut_S
**
Beiträge: 38
Registriert: So, 29.10.2017 11:29

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

Beitrag von Helmut_S » Fr, 16.03.2018 19:07

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) 46-mal heruntergeladen
Gruß, Helmut
openSUSE Leap 15.0 / Linux Mint 18.3 / Win 10-64
LO 6.04.2

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

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

Beitrag von Stephan » Fr, 16.03.2018 21:20

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) 1943 mal betrachtet

HeritzP
*****
Beiträge: 279
Registriert: So, 22.12.2013 11:23

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

Beitrag von HeritzP » Fr, 16.03.2018 21:26

Hallo,

werden die Anführungszeichen in A1(=FEHLERTYPX(C1)) entfernt, funktioniert das Makro.


Gruß HeritzP

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

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

Beitrag von Stephan » Fr, 16.03.2018 21:35

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: 38
Registriert: So, 29.10.2017 11:29

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

Beitrag von Helmut_S » 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
Funktion_Fehlertyp.png (56.31 KiB) 1920 mal betrachtet
Gruß Helmut

Edit: Schon seltsam, wenn ich das X lösche erscheint in A1 532, - mit X steht dort #DIV/0
openSUSE Leap 15.0 / Linux Mint 18.3 / Win 10-64
LO 6.04.2

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

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

Beitrag von Stephan » Fr, 16.03.2018 22:15

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: 38
Registriert: So, 29.10.2017 11:29

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

Beitrag von Helmut_S » Fr, 16.03.2018 22:25

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
openSUSE Leap 15.0 / Linux Mint 18.3 / Win 10-64
LO 6.04.2

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

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

Beitrag von Stephan » Fr, 16.03.2018 22:57

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: 670
Registriert: Fr, 09.12.2011 16:50

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

Beitrag von mikeleb » Sa, 17.03.2018 22:37

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: 10491
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

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

Beitrag von Stephan » So, 18.03.2018 09:15

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