Seite 1 von 1

TAGE360

Verfasst: Do 2. Feb 2017, 16:08
von peroed
Mag ein ganz dummer Anfängerfehler sein.

Aber folgender Code führt bei mir zu einer Fehlermeldung (Fehler Klammerschachtelung)


Sub Main

DIM i as Integer

i=TAGE360("01.01.2000"; JETZT())

End Sub

Den Teil ab TAGE360 habe ich aus der Dokumentation kopiert. Bin ziemlich ratlos. Ich kann nicht erkennen wo die Klammerung falsch sein soll.

Habe das in Libre office 5.2.4 (Windows 10) und 5.3 (OS X Sierra) ausprobiert. Gleiches Ergebnis

Re: TAGE360

Verfasst: Do 2. Feb 2017, 16:52
von Rocko
peroed hat geschrieben:i=TAGE360("01.01.2000"; JETZT())
Eine Formel beginnt grundsätzlich mit einem Gleichheitszeichen. Bei mir gibt die Hilfe als Beispiel:
=TAGE360("2000-01-01"; JETZT())

Re: TAGE360

Verfasst: Do 2. Feb 2017, 16:56
von peroed
Ich rede hier nicht von dem Inhalt einer Zelle. Da hast Du sicher recht.

Hier geht es um Libre Basic Programmierung in einem Makro. Da fängt keine Formel mit einem = Zeichen an.

Re: TAGE360

Verfasst: Do 2. Feb 2017, 17:11
von Rocko
peroed hat geschrieben:Ich rede hier nicht von dem Inhalt einer Zelle. Da hast Du sicher recht.
Wahrscheinlich liegt der Fehler in der Schreibweise des Datums. Denn bei dieser Schreibweise =TAGE360("01.01.2000"; JETZT()) gibt die Zelle "WERT!" aus.

Von der Makro-Programmierung habe ich tatsächlich nur wenig Ahnung.

Re: TAGE360

Verfasst: Do 2. Feb 2017, 17:18
von peroed
Leider nicht. Und ich habe die Funktion ja aus der Doku kopiert https://help.libreoffice.org/Calc/DAYS360/de

Re: TAGE360

Verfasst: Do 2. Feb 2017, 18:10
von mikele
Hallo,
der Aufruf einer Calc-internen Funktion erfolgt etwas aufwändiger:

Code: Alles auswählen

oFunctionAccess = createUnoService( "com.sun.star.sheet.FunctionAccess" )
Dim args(2) As Variant
        args(0) ="1.2.2017"
        args(1)="1.3.2017"
        args(2)=0
result = oFunctionAccess.callFunction("DAYS360", args() )

Re: TAGE360

Verfasst: Do 2. Feb 2017, 18:17
von karolus
Hallo

Wieso kommst du auf die Idee einen Funktionsaufruf aus der Dokumentation für Calc in die Basic-IDE reinzukopieren :?: :?:

1. Falsche Syntax: Argumente werden in Basic mit Komma getrennt nicht mit Semicolon.
2. Calcfunktionen können nicht in Basic einfach so benutzt werden wie in Calc, …
3. … und schon gar nicht mit dem deutsch lokalisiertem Funktionsnamen

Code: Alles auswählen

sub test()
    funcaccess = createUnoService("com.sun.star.sheet.FunctionAccess")
    ddd = cdbl(datevalue("2000-01-01"))
    print funcaccess.callFunction("DAYS360",array(ddd, cdbl(now) ) )
    'now ist hier die entsprechende Laufzeitfunktion aus Basic, nicht die aus Calc'
End Sub
@mikele: Basic ist schon extrem seltsam, Datümer in beliebig formatierten Zeichenketten funktionieren tatsächlich, während die Rückgabe der Runtim-funktion now erstmal explizit in eine Fliesskommazahl gewandelt werden muss - verstehe das wer will!

Re: TAGE360

Verfasst: Sa 4. Feb 2017, 09:20
von peroed
Sorry, mein Fehler.

Ich hatte nach LibreOffice Datumsfunktionen gesucht und dabei TAGE360 gefunden. Dabei übersehen, dass dies eine Calc-Funktion ist, die es in Basic nicht gibt.

Allen die geholfen haben, herzlichen Dank