title image


Smiley Eine Kalenderwoche kann sich über mehrere Monate erstrecken!
Hi,



möchtest Du die Beurteilung an einem best. Wochentag der KW fest machen?



Dann könnte Dir z.B. folgendes helfen:





Public Function TagInKw(lngKW As Long, _

Optional lngWochentag As VbDayOfWeek = vbMonday, _

Optional lngJahr) As Date



' ========================================================================

' Funktion:

' =========

' Ermittelt das Datum, welches ein bestimmter Wochentag in der übergebenen

' Kalenderwoche hat (z.B. den Montag einer Kalenderwoche)

'

' Eingabeparameter:

' =================

' lngKW : Kalenderwoche (als Zahl)

' lngWochentag: Wochentag der übergebenen Kalenderwoche (Montag bis Sonntag),

' der als Datum zurückgegeben werden soll

' (Default = vbMonday)

' lngJahr : Kalenderjahr, für das der Funktionsaufruf gilt

' (Default = laufendes Jahr)

'

' Rückgabewert:

' =============

' TagInKw : Datum des gewünschten Tages in der angegebenen Kalenderwoche

'

' Prämissen:

' ==========

' - Für die Funktion beginnt die Woche mit dem Montag und endet mit dem Sonntag

' - KW 1 des angegebenen Jahres ist die erste Woche, die mindestens 4 Tage hat

' ========================================================================



Dim datTmp As Date





lngJahr = IIf(IsMissing(lngJahr), Year(Date), lngJahr)



datTmp = DateAdd("d", (lngKW - 1) * 7, DateSerial(lngJahr, 1, 1))

datTmp = DateAdd("d", 1 - Weekday(datTmp, lngWochentag), datTmp)



If Format(datTmp, "ww", vbMonday, vbFirstFourDays) lngKW Then

datTmp = DateAdd("d", 7, datTmp)

End If



If (lngKW = 1 Or lngKW = 53) And _

Day(datTmp) > 4 And _

Day(datTmp) < 8 Then

datTmp = DateAdd("d", -7, datTmp)

End If



TagInKw = datTmp



End Function





Dieses Coding in ein allgemeines Modul kopieren. Hast Du Dich z.B. auf den Freitag verständigt, würde das so funktionieren:





MsgBox Format(TagInKw(40,vbFriday ),"mmmm")





Will meinen: Der Freitag in KW 40, die im September beginnt, fällt auf den 03.10.2003. So liefert die Funktion also "Oktober" zurück. Rufst Du die Funktion dagegen so auf...





MsgBox Format(TagInKw(40,vbMonday ),"mmmm")





...gibt sie "September" zurück.



Alles klar?



Gruß,

Eric

Spotlight-Kicktipp gestartet!

Steig ein und trete mit Deinem Bundesliga-Tipp gegen die Besten an! :o)

http://www.kicktipp.de/spotlight/



geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: