🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

TAGE360

Alles zur Programmierung im LibreOffice.
Antworten
peroed
Beiträge: 5
Registriert: So 15. Jan 2017, 12:37

TAGE360

Beitrag von peroed » Do 2. Feb 2017, 16:08

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

Rocko
* LO-Experte *
Beiträge: 1336
Registriert: Sa 2. Jul 2011, 11:12

Re: TAGE360

Beitrag von Rocko » Do 2. Feb 2017, 16:52

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())
Hast du schon mal einen Blick in die Writer-FAQ und in die Calc-FAQ des Forums geworfen?
Für jeden vor dem Beginn seiner Seminararbeit ein unbedingtes MUSS: http://openoffice-uni.org/

peroed
Beiträge: 5
Registriert: So 15. Jan 2017, 12:37

Re: TAGE360

Beitrag von peroed » Do 2. Feb 2017, 16:56

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.

Rocko
* LO-Experte *
Beiträge: 1336
Registriert: Sa 2. Jul 2011, 11:12

Re: TAGE360

Beitrag von Rocko » Do 2. Feb 2017, 17:11

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.
Hast du schon mal einen Blick in die Writer-FAQ und in die Calc-FAQ des Forums geworfen?
Für jeden vor dem Beginn seiner Seminararbeit ein unbedingtes MUSS: http://openoffice-uni.org/

peroed
Beiträge: 5
Registriert: So 15. Jan 2017, 12:37

Re: TAGE360

Beitrag von peroed » Do 2. Feb 2017, 17:18

Leider nicht. Und ich habe die Funktion ja aus der Doku kopiert https://help.libreoffice.org/Calc/DAYS360/de

mikele
* LO-Experte *
Beiträge: 1932
Registriert: Mo 1. Aug 2011, 20:51

Re: TAGE360

Beitrag von mikele » Do 2. Feb 2017, 18:10

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() )
Gruß,
mikele

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2539
Registriert: Fr 10. Dez 2010, 10:01

Re: TAGE360

Beitrag von karolus » Do 2. Feb 2017, 18:17

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!
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

peroed
Beiträge: 5
Registriert: So 15. Jan 2017, 12:37

Re: TAGE360

Beitrag von peroed » Sa 4. Feb 2017, 09:20

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


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten