title image


Smiley Re: Letzter Werktag im Monat/Monatsende
Da sich ja die Anzahl der Tage im Monat nicht so schnell ändern wird, kann man diesen Array fest verdraten.



Nur beim Februar muß man auf Schaltjahr prüfen.









Option Explicit



Public TageImMonat() As Long





Private Sub Form_Load()

   ReDim TageImMonat(1 To 12)

   TageImMonat(1) = 31

   If IsSchaltjahr(Year(Date)) Then

      TageImMonat(2) = 29

   Else

      TageImMonat(2) = 28

   End If

   TageImMonat(3) = 31

   TageImMonat(4) = 30

   TageImMonat(5) = 31

   TageImMonat(6) = 30

   TageImMonat(7) = 31

   TageImMonat(8) = 31

   TageImMonat(9) = 30

   TageImMonat(10) = 31

   TageImMonat(11) = 30

   TageImMonat(12) = 31



End Sub





Public Function IsSchaltjahr(ByVal Jahr As Integer) As Boolean

  If Jahr < 100 Then Jahr = 2000 + Jahr

  If (Jahr Mod 4 = 0) And ((Jahr Mod 100 <> 0) Or _

   (Jahr Mod 400 = 0)) Then

    IsSchaltjahr = True

  Else

    IsSchaltjahr = False

  End If

End Function















Den jeweils letzten Arbeitstag eines Monats kann man dann so bestimmen:









Public Function LetzterArbeitstag(ByVal Datum As Date) As Long

Dim i As Long

Dim lngTag As Long

Dim strMonatJahr As String



   strMonatJahr = "." & Month(Datum) & "." & Year(Datum)

   For i = TageImMonat(Month(Datum)) To 1 Step -1

      lngTag = Weekday(CDate(i & strMonatJahr))



      If Not lngTag = vbSunday And _

         Not lngTag = vbSaturday Then



         LetzterArbeitstag = i

         Exit For

      End If

   Next i

End Function

















Antwort auf deine (noch nicht gestellte) Frage bezüglich der Feiertage:

Berechnung von Feiertagen

Feiertage Berechnen



Die festen Feiertage wie 24.12 etc kann man ja wieder direkt angeben.
Gruß
Gaga

___________________________________________________________________

Profilösungen für VB6
wenn nicht anders angegeben, sind alle Codebeispiele nicht getestet, nur getippt


geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: