Funktion IKV (IRR), Datenübergabe

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

Moderator: Moderatoren

Klaus_O
Beiträge: 2
Registriert: Mi, 27.02.2013 09:47

Funktion IKV (IRR), Datenübergabe

Beitrag von Klaus_O »

Hallo zusammen,
ich versuche gerade Daten an die Funktion Funktion "IRR" in einem Makro zu übergeben. Als Beispiel habe ich dieses funktionierende Makro benutzt.

Code: Alles auswählen

Sub Test()
oFunctionAccess = createUnoService( "com.sun.star.sheet.FunctionAccess" )
Dim args( 2 ) As Variant
     args(0) = 8
     args(1) = 4
     args(2) = 12
result = oFunctionAccess.callFunction( "LCM", args() ) 
msgbox result
end sub
Aber mit "IRR" geht dies so nicht und führt zu einer Fehlermeldung.

Code: Alles auswählen

Sub TestIRR()
oFunctionAccess = createUnoService( "com.sun.star.sheet.FunctionAccess" )
Dim args( 2 ) As Variant
     args(0) = -1000
     args(1) = 10
     args(2) = 1100
result = oFunctionAccess.callFunction( "IRR", args() ) 
msgbox result
end sub
Bisher ist es mir nur gelungen einen Datenbereich in einer Tabelle zu übergeben:

Code: Alles auswählen

Startzelle = "A1"
  Endzelle = "A3"
  oFunktion = GetProcessServiceManager().createInstance("com.sun.star.sheet.FunctionAccess")
  oBereich = oTabelle.getcellrangebyname(Startzelle &":"& Endzelle)
  Ergebnis = oFunktion.callFunction("IRR", Array(oBereich))
Gibt es eine Möglichkeit die Daten im Makro direkt zu übergeben.

Gruß Klaus
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Funktion IKV (IRR), Datenübergabe

Beitrag von balu »

Hallo Klaus,

also IRR ist der "englische" Name für das "deutsche" IKV.
Aber mit "IRR" geht dies so nicht und führt zu einer Fehlermeldung.
Immer wichtig zu Wissen um was für eine Fehlermeldung es sich dabei handelt.

Bei manchen Calc-Funktionen hilft es anstatt den englischen, den deutschen Namen zu benutzen. Ob es hier zutrifft, weiss ich nicht da nicht getestet. Was mir aber aufgefallen ist, dass Du versuchst zu viele Parameter zu übergeben.

Bei IKV sagt mit der Funktions-Assistent in Calc das nur 2, in Worten ZWEI Parameter vorgesehen sind. Du jedoch versuchst DREI Parameter -{args(0) bis args(2)}- zu übergeben, was wohl nicht funktionieren kann. Und deshalb empfehle ich dir an "IRR" auch nur zwei Parameter zu übergeben. Musst halt mal selber testen ob es hilft.


Bisher ist es mir nur gelungen einen Datenbereich in einer Tabelle zu übergeben:
[...]
Gibt es eine Möglichkeit die Daten im Makro direkt zu übergeben.
Sorry, aber ich versteh momentan nicht dein Problem und die Frage.



Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Funktion IKV (IRR), Datenübergabe

Beitrag von komma4 »

balu hat geschrieben:zu viele Parameter
Gut gedacht :)

Der Fehler ist mMn, dass die Funktion einen Zellbereich (genauer: das Objekt eines Zellbereichs) erwartet.

Deshalb sehe ich keine Möglichkeit Werte "direkt" (als Werte) zu übergeben.
Es geht dann nur ein Hilfskontrukt: Werte in Zellen zuweisen und diesen (nun mit Werten besetzten) Bereich an die Funktion zu überreichen.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Klaus_O
Beiträge: 2
Registriert: Mi, 27.02.2013 09:47

Re: Funktion IKV (IRR), Datenübergabe

Beitrag von Klaus_O »

komma4 hat geschrieben:
Der Fehler ist mMn, dass die Funktion einen Zellbereich (genauer: das Objekt eines Zellbereichs) erwartet.

Deshalb sehe ich keine Möglichkeit Werte "direkt" (als Werte) zu übergeben.
Es geht dann nur ein Hilfskontrukt: Werte in Zellen zuweisen und diesen (nun mit Werten besetzten) Bereich an die Funktion zu überreichen.
Ok. Danke für die Bestätigung, daß es nicht geht. Muss ich nicht mehr lange rumprobieren. Die vorgeschlagene Lösung nutze ich bisher. Wollte dies nur vereinfachen. Aber wenns nicht geht gehts nicht.

Wo ich allerdings sehen kann, daß die Formel das von Dir genannte "(genauer: das Objekt eines Zellbereichs)" erwartet ist mir nach wie vor unklar. Ich muss bei sowas immer rumraten und probieren :-(

Gruß Klaus
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Funktion IKV (IRR), Datenübergabe

Beitrag von balu »

Hallo

@Winfried
Der Fehler ist mMn, dass die Funktion einen Zellbereich (genauer: das Objekt eines Zellbereichs) erwartet.
Ja jetzt hat es bei mir ganz leise Klick gemacht. Im Funktions-Assistent ist ja der Hinweis auf Matrtix zu lesen, sprich Datenbereich und nicht eine einzelne Zelle. Und deshalb hatte ich hier im Forum mal ein bisschen gesucht, und etwas gefunden was vielleicht Klaus helfen könnte.


@Klaus
Schau mal hier rein: ZÄHLENWENN() im Makro aufrufen
Vielleicht hilft dir das ja doch.



Gruß
balu



p.s:
Kämpfe momentan mit ein paar Viren. Nein! Nicht Compudda :?
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Antworten