Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
412to416
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
412to416
412to416
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Datum aus KW per VBA und Option
Frank
Hallo Experten,
gleich vorweg, VBA gut ist übertrieben!
Ich bräuchte eine VBA- Funktion, mit der ich aus einer KW das Datum ermitteln kann.
Als Parameter sollen Jahr, Kw und optional der Wochentag übergeben werden.
Fehlt die Angabe des Wochentags, soll der Montag als gegeben gewertet
werden.
Ich hoffe die Erklärung ist verständlich.
Grüße Frank

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Datum aus KW per VBA und Option
PeterW
Hallo Frank,
links gibt es die Schaltfläche Excel-Recherche (eventuell den linken Frame nach unten scrollen). Gib als Suchbegriff ein "Kalenderwoche". Schon die erste Fundstelle dürfte dein Problem lösen.
Gruß
Peter
Leider nicht....
Frank
Hallo Peter,
ich habe zuvor schon recherchiert, aber für mein Anliegen halt keine
Lösung gefunden. Nochmals zur Erinnerung, es wird eine VBA- Lösung
gesucht, mit der Option, den Wochentag selbst festzulegen.
Grpße Frank
AW: Leider nicht....
Josef
Hallo Frank!
Kopiere diesen Code in einem allgemeinen Modul.
Du kannst die Funktion in einer Tabelle verwenden,
aber auch in einem Makro!
Option Explicit

Public Function Datum_Aus_KW_und_Wochentag(Jahr As Integer, Kalenderwoche As Integer, _
Optional Wochentag As Integer)

'Wochentag 1=Mo bis 7=So
Dim iDay As Integer, iWeek As Integer
Wochentag = Wochentag - 1
If Wochentag < 0 Or Wochentag > 6 Then Wochentag = 0
If Jahr < 1900 Or Jahr > 3999 Then
Datum_Aus_KW_und_Wochentag = "#Jahr?"
Exit Function
End If
If Kalenderwoche < 1 Or Kalenderwoche > 53 Then
Datum_Aus_KW_und_Wochentag = "#Woche?"
Exit Function
End If
iDay = 1
iWeek = DINWeek(DateSerial(Jahr, 1, 1))
If iWeek <> 1 Then
Do Until DINWeek(DateSerial(Jahr, 1, iDay)) = 1
iDay = iDay + 1
Loop
Else
Do Until DINWeek(DateSerial(Jahr, 1, iDay)) <> 1
iDay = iDay - 1
Loop
iDay = iDay + 1
End If
Datum_Aus_KW_und_Wochentag = DateSerial(Jahr, 1, iDay + Wochentag) + (Kalenderwoche - 1) * 7
End Function

Private Function DINWeek(dat As Date) As Integer
Dim dValue As Double
dValue = DateSerial(Year(dat + (8 - Weekday(dat)) Mod 7 - 3), 1, 1)
DINWeek = (dat - dValue - 3 + (Weekday(dValue) + 1) Mod 7) \ 7 + 1
End Function

Sub test()
'zur verwendung in einem Makro
MsgBox Format(Datum_Aus_KW_und_Wochentag(2004, 14, 7), "ddd dd.mm.yyyy")
End Sub

Gruß Sepp
Anzeige
Das ist es , danke dir...oT
Frank
oT

332 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige