Funktion soll mehrere Werte an Calc-Zellen zurückgeben

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Funktion soll mehrere Werte an Calc-Zellen zurückgeben

Re: Funktion soll mehrere Werte an Calc-Zellen zurückgeben

von saxo » Fr, 02.04.2010 20:22

Ihr seid Spitze.
Klar, es wird ja auch ein Zeiger zurückgegeben, den kann ich nicht als double deklarieren.
danke ergebenst

Re: Funktion soll mehrere Werte an Calc-Zellen zurückgeben

von Stephan » Fr, 02.04.2010 17:03

Ich denke mal die FEhlermeldung dürfte irreführend sein. Im Kern darf wohl an der Stelle nicht als Double sondern nur als Variant übergeben werden:

Code: Alles auswählen

Function SpaltenVektor() As Variant
ich habs aber auf die SChnelle nicht überprüft.



GRuß
Stephan

Re: Funktion soll mehrere Werte an Calc-Zellen zurückgeben

von saxo » Fr, 02.04.2010 16:15

Sorry Leute, ich bin zu doof.
Ich hab es genau so gemacht:
Function SpaltenVektor() As Double
Dim ar(2) As Double
ar(0) = 3
ar(1) = 6
ar(2) = 9
SpaltenVektor = ar
End Function

Jetzt rufe ich die Formel in einer Calc-Zelle auf:
=Spaltenvektor()
{=Spaltenvektor()} bzw. als Matrixformel

Es kommt immer der gleiche Fehler: Basic-Laufzeitfehler, Objektvariable nicht belegt.
Er scheint die Zeile SpaltenVektor = ar nicht zu verstehen
So kenn ichs auch von C, dass man einen Zeiger auf ein array übergibt, will aber nicht funktionieren....

Re: Funktion soll mehrere Werte an Calc-Zellen zurückgeben

von Stephan » Do, 01.04.2010 10:48

Du könntest eigene Matrixformeln schreiben. Das scheint mir in OOo Basic genauso zu funktionieren wie in Excel VBA.
Soweit klar - danke für den HInweis.

Aber selbst wenn ich den Wunsch des NUtzers in die Zelle zu schreiben (darauf bezog sich meine Antwort) übersehe, kann ich doch auch nicht so ganz wirklich die Matrix-Formel nur aus Zelle 1 aufrufen, wie es gewünscht wurde, ja klar ist der Eintrag der Formel formal in eine Zelle möglich, nur in dem Moment wo die Formel übernommen wird erstreckt sie sich automatisch über mehrere Zeilen und kann dann auch nur noch zusammenhängend bearbeitet werden.
Kann aber gut sein ich bewerte den Schwerpunkt der Anfrage von "saxo" nur falsch, denn gegen die Matrix-Lösung spricht allgemein nichts.



Gruß
Stephan

Re: Funktion soll mehrere Werte an Calc-Zellen zurückgeben

von bst » Do, 01.04.2010 09:02

Morgen,

Du könntest eigene Matrixformeln schreiben. Das scheint mir in OOo Basic genauso zu funktionieren wie in Excel VBA.

cu, Bernd
--

Code: Alles auswählen

REM  *****  BASIC  *****

Option Explicit

Function SpaltenVektor() As Variant
   Dim ar(1)
   ar(0) = 3
   ar(1) = 4
   SpaltenVektor = ar
End Function

' oder so:
Function SpaltenVektor2() As Variant
   Dim ar(0, 1)
   ar(0, 0) = 8
   ar(0, 1) = 9
   SpaltenVektor2 = ar
End Function

Function ZeilenVektor() As Variant
   Dim ar(1, 0)
   ar(0, 0) = 1
   ar(1, 0) = 2
   ZeilenVektor = ar
End Function

Function myMatrix() As Variant
   Dim ar(1, 1)
   ar(0, 0) = "00"
   ar(0, 1) = "01"
   ar(1, 0) = "10"
   ar(1, 1) = "11"
   myMatrix = ar
End Function

Re: Funktion soll mehrere Werte an Calc-Zellen zurückgeben

von Stephan » Do, 01.04.2010 07:17

Die Funktion soll 3 Werte berechnen und diese in die Zellen 1-3 der Calc-Tabelle schreiben.
Kann ich in Basic mehr als ein Wert zurückgeben?
Es ist schon mehrfach hier im Forum thematisiert worden das sowas prinzipiell nicht geht, da beim Aufruf von (benutzerdefinierten) Funktion jeweils alle ZEllen der Tabelle, aus der der Aufruf erfolgt, schreibgeschützt sind. (Tabellen-)Funktionen liefern immer nur einen Rückgabewert in die Zelle zurück aus der sie aufgerufen werden. Eine Rückgabeaktion (z.B. das Schreiben von Werten in Zellen derselben Tabelle) ist mit aus Zellen aufgerufenen Funktionen prinzipiell nicht möglich, auch nicht das aktive SChreiben in die aufrufende Zelle selbst.




GRuß
Stephan

Funktion soll mehrere Werte an Calc-Zellen zurückgeben

von saxo » Do, 01.04.2010 00:52

Hallo,
eine Funktion soll z.B. aus Calc-Zelle 1 aufgerufen werden.
Die Funktion soll 3 Werte berechnen und diese in die Zellen 1-3 der Calc-Tabelle schreiben.
Kann ich in Basic mehr als ein Wert zurückgeben?

Nach oben