Function EDATE

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Function EDATE

Re: Function EDATE

von Gino » Do, 05.03.2009 09:08

Guten Morgen Charly,

das ist klasse das die Function doch funktioniert.

Vielen Dank für Deinen Geistestblitz. :lol:
Da muss man erstmal drauf kommen.

Einen schönen Tag wünsche ich Dir.

Gino

Re: Function EDATE

von Charly » Do, 05.03.2009 07:16

Hallo Gino!

Ich war gestern etwas voreilig damit zu schreiben, dass die Funktion EDATE in Starbasic nicht geht. Ich habe es nochmals getestet. Die englische Bezeichnung für EDatum ist nur anders als du programmiert hast. Mit der vollständigen Bezeichnung geht es.

Code: Alles auswählen

Sub Example_Edate
Dim lDate as long

   lDate = DateSerial(2009, 4, 9)
   oFunctionAccess = createUnoService( "com.sun.star.sheet.FunctionAccess" )
   result = oFunctionAccess.callFunction("com.sun.star.sheet.addin.Analysis.getEdate",array(lDate,2))
   MSGBOX(format(result,"DD.MM.YY"))

end Sub
Gruß
Charly

Re: Function EDATE

von Gino » Mi, 04.03.2009 21:15

Hi Charly,

Das funktioniert ja prächtig. Tausend Dank.
Das bringt mich wieder einen Riesenschritt weiter. :D

Ich habe es noch auf meien Bedürfnisse angepasst (15 Monate):

Code: Alles auswählen

Function Monatsverschiebung(Datum,Zahl)

Jahr = Year(Datum)
Monat = Month(Datum)
Tag = Day(Datum)

Monat = Monat + Zahl

If Monat < 1 then
Monat = Monat + 12
Jahr = Jahr - 1
end if

If Monat > 25 then
Monat = Monat - 24
Jahr = Jahr + 2
end if

result = DateSerial(Jahr,Monat,Tag)

Monatsverschiebung = result

end function
Schönen Abend noch.

Gino

Re: Function EDATE

von Charly » Mi, 04.03.2009 20:21

Hallo Gino!

Ich habe mein Makro noch ausgebaut, damit auch jahresübergreifende Verschiebungen möglich sind. Zum Testen habe ich es als Funktion geschrieben.

Code: Alles auswählen

Function Monatsverschiebung(Datum,Zahl)

Jahr = Year(Datum)
Monat = Month(Datum)
Tag = Day(Datum)

Monat = Monat + Zahl

If Monat < 1 then 
Monat = Monat + 12
Jahr = Jahr - 1
end if

If Monat > 12 then
Monat = Monat - 12
Jahr = Jahr + 1
end if

result = DateSerial(Jahr,Monat,Tag)

Monatsverschiebung = result

end function
Gruß
Charly

Re: Function EDATE

von Gino » Mi, 04.03.2009 20:19

Hallo Charly,

erstmal Danke für die schnelle Antwort.

Die Grundidee von Dir ist wirklich gut. Sie hat aber leider einen Haken. Der Code berücksichtigt leider keinen Jahreswechsel.
Somit funktioniert:

Code: Alles auswählen

Sub Example_Edate
Dim lDate as Long

   lDate = DateSerial(2009, 12, 9)
   
   result = DateSerial(Year(lDate),Month(lDate)+2,Day(lDate)
   MSGBox(result)
end Sub
leider nicht. :(

Ich denke jetzt wird es kompliziert.

Nochmals Danke.

Gino

Re: Function EDATE

von Charly » Mi, 04.03.2009 19:57

Hallo Gino!

Ich glaube die Funktion EDATE (auf Deutsch Edatum) lässt sich nicht mit dem FunctionAcces abbilden. Wenn ich nämlich die deutsche Funktion in eine Zelle eingebe und die Formel mit dem Befehl zelle.formula abfrage erhalte ich als Antwort: "=com.sun.star.sheet.addin.analysis.getEdate". Das steht bei den normalen Funktionen nicht so da.

Aber die Monatsverschiebung könntest du auch folgendermaßen programmieren.

Code: Alles auswählen

Sub Example_Edate
Dim lDate as Long

   lDate = DateSerial(2009, 4, 9)
   
   result = DateSerial(Year(lDate),Month(lDate)+2,Day(lDate)
   MSGBox(result)
end Sub
Vielleicht hilft dir das weiter.

Gruß
Charly

Function EDATE

von Gino » Mi, 04.03.2009 19:23

Hallo Experten,

kann mir bitte einer sagen wie ich die Function "EDATE" ans Laufen bekomme.

Code: Alles auswählen

Sub Example_Edate
Dim lDate as Long

	lDate = DateSerial(2009, 4, 9)
	oFunctionAccess = createUnoService( "com.sun.star.sheet.FunctionAccess" )
	result = oFunctionAccess.callFunction("EDATE",array(lDate,2)
end Sub
Bei obigem Code kommt die Fehlermeldung:
Basic Laufzeitfehler
Es ist eine Exception aufgetreten
Type: com.sun.star.container.noSuchElementException
Ich habe schon einiges versucht, aber es will einfach nicht.
Auch die Suche hier im Forum noch mit Google konnte mir nicht weiterhelfen.

Es geht mir einfach darum ein Datum ein paar Monate weiter auszugeben.

Ich würde mir freuen, wenn mir jemand weiterhelfen könnte. :D
Vielen Dank im voraus.

Gino

Nach oben