title image


Smiley Re: Funktion in VBA um Wochentag aus Kalenderwoche
Hi Michael,



kopiere Dir die folgende Function in ein allgemeines Modul:





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





Die Function hat drei Übergabeparameter; Kommentierung siehe Code.



Die Wochentage werden wie folgt übergeben:



Sonntag = 1

Montag = 2 (Standardwert, wenn nichts angegeben wird)

Dienstag = 3

Mittwoch = 4

Donnerstag = 5

Freitag = 6

Samstag = 7





Aufruf in Excel dann etwa so:





=TagInKw(7)





Ergebnis: 14.02.2005 (Montag)





=TagInKw(7;5)





Ergebnis: 17.02.2005 (5 = Donnerstag)





=TagInKw(38;3;2004)





Ergebnis: 14.09.2004 (Dienstag in KW 38 des Jahres 2004)



Die Excel-Zellen, in denen Du die Function verwendest, müssen natürlich als Datum formatiert sein.



Schönen 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: