Discussion:
Die Anzahl der Tage im Monat ermitteln
(zu alt für eine Antwort)
Romuald Himmelhaus
2004-10-27 14:48:47 UTC
Permalink
Ich möchte gern mit VBA die Anzahl der Tage im Monat ermitteln. Kann mir
jemand auf die Sprünge helfen?
Thomas Gahler
2004-10-27 15:24:06 UTC
Permalink
Hallo Romuald
Post by Romuald Himmelhaus
Ich möchte gern mit VBA die Anzahl der Tage im Monat ermitteln. Kann mir
jemand auf die Sprünge helfen?
Vielleicht ein bisschen freundlicher (Anrede, Grussformel) wir sind hier
ziemlich nett zu einander.


Das solte so das machen was du suchst.

Sub Demo()
MsgBox funcAnzahlTageImMonat(2, 2003)

MsgBox funcAnzahlTageImMonat(1, 2004)
MsgBox funcAnzahlTageImMonat(2, 2004)
MsgBox funcAnzahlTageImMonat(3, 2004)
MsgBox funcAnzahlTageImMonat(4, 2004)
End Sub

Private Function funcAnzahlTageImMonat( _
ByVal IMonat As Integer, _
ByVal IJahr As Integer)
'Der erste Tag des Folgemonats miuns ein
'ergibt die Anzahl Tage des gesuchten Monats.

Dim dDatum As Variant

'Nächster Monat
IMonat = IMonat + 1
'Speziallfall Dezember
If IMonat > 12 Then
IMonat = 1
IJahr = IJahr + 1
End If

'Datum zusammensetzen
dDatum = "01/" & _
CStr(IMonat) & "/" & _
CStr(IJahr)

'Vortag bestimmen
dDatum = CDate(dDatum) - 1

funcAnzahlTageImMonat = Day(dDatum)
End Function





--
Thomas Gahler
MVP für WordVBA

- Windows XP, Office XP (SP3)
Hans-Jürgen Philippi
2004-10-27 16:22:03 UTC
Permalink
Hiho,
Post by Romuald Himmelhaus
Ich möchte gern mit VBA die Anzahl der Tage im Monat ermitteln.
Kann mir jemand auf die Sprünge helfen?
Probier mal folgenden Code im Direkteingabe-Fenster:
?DateAdd("m", 1, Now) - Now

'Now' gerne durch beliebiges Datum (sinnigerweise der 1.1.) des
betreffenden Monats ersetzen!

HTH,
Gruß

Hansi


--
HB++ is the reincarnation of VB6:
Simplicity * power = WOW!!!
http://www.handheld-basic.com/
Thomas Gahler
2004-10-27 16:46:28 UTC
Permalink
Hallo Hans-Jürgen
Post by Hans-Jürgen Philippi
?DateAdd("m", 1, Now) - Now
Cool, was es so alles gibt. ;-)

Gruss

--
Thomas Gahler
MVP für WordVBA

- Windows XP, Office XP (SP3)
Hans-Jürgen Philippi
2004-10-28 08:46:56 UTC
Permalink
Hi Thomas,
Post by Thomas Gahler
Post by Hans-Jürgen Philippi
?DateAdd("m", 1, Now) - Now
Cool, was es so alles gibt. ;-)
Wo ein DateAdd(), da auch ein DateDiff()... ;-)
Gerade im Bereich Datumsberechnung liefert VB(A) sehr nette Werkzeuge,
die einem den "Hard way" mit eigenen Schaltjahrformeln & Konsorten
ersparen! :-)

Überaus nützlich ist auch die Erkenntnis, dass ein Datum intern als
Fließkommazahl behandelt und nur für Dich als User eben als
Datumsliteral dargestellt wird: Vor dem Komma dieser "Datumszahl"
stehen die ganzen Tage seit dem 30.12.1899, 00:00 Uhr und danach der
Dezimal-Bruchteil des aktuellen Tages.
Probier z.B. mal an der Direkteingabe:

?CDbl(Now)
oder
?Format$(0, "YYYY-MM-DD hh:mm:ss")

So kann man leicht ausrechnen, wann etwa von jetzt an eine
Viertelstunde vergangen ist, ohne überhaupt mit Zeitdarstellungen zu
hantieren (15 Minuten entsprechen einem 96tel des Tages):

?Now + 1/96


Nett, gell?!? :-)
Gruß,

Hansi


--
HB++ is the reincarnation of VB6:
Simplicity * power = WOW!!!
http://www.handheld-basic.com/

Loading...