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