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?
Funktion soll mehrere Werte an Calc-Zellen zurückgeben
Moderator: Moderatoren
Re: Funktion soll mehrere Werte an Calc-Zellen 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.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?
GRuß
Stephan
Re: Funktion soll mehrere Werte an Calc-Zellen zurückgeben
Morgen,
Du könntest eigene Matrixformeln schreiben. Das scheint mir in OOo Basic genauso zu funktionieren wie in Excel VBA.
cu, Bernd
--
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
Soweit klar - danke für den HInweis.Du könntest eigene Matrixformeln schreiben. Das scheint mir in OOo Basic genauso zu funktionieren wie in Excel VBA.
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
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....
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
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:
ich habs aber auf die SChnelle nicht überprüft.
GRuß
Stephan
Code: Alles auswählen
Function SpaltenVektor() As Variant
GRuß
Stephan
Re: Funktion soll mehrere Werte an Calc-Zellen zurückgeben
Ihr seid Spitze.
Klar, es wird ja auch ein Zeiger zurückgegeben, den kann ich nicht als double deklarieren.
danke ergebenst
Klar, es wird ja auch ein Zeiger zurückgegeben, den kann ich nicht als double deklarieren.
danke ergebenst