van weeknummer naar datum

  • Onderwerp starter Onderwerp starter tigo
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

tigo

Gebruiker
Lid geworden
18 nov 2006
Berichten
69
Hoi,

dankzij dit forum weet ik hoe ik van een datum een weeknummer kan bepalen. Maar nu andersom. Als ik een weeknummer (en het jaar) heb, hoe kan ik dan een datum bepalen in die week? Dus stel, ik heb jaar 2006 en weeknummer 47, hoe kom ik dan aan de datum in de range 20 t/m 26 november? Welke dag maakt me niet uit, die kan ik wel omzetten. Ik hoor het graag.

Groeten, Tigo
 
Daarvoor zul je zelf een functie moeten schrijven.
Zoiets bijvoorbeeld:

Public Function fnGetDateInWeek(mYear As Integer, mWeek As Integer) As Date
Dim datDate As Date
Dim blnStop As Boolean

blnStop = False
datDate = "01-01-" & CStr(mYear)
Do While blnStop = False
If Format(datDate, "ww") = mWeek Then
blnStop = True
fnGetDateInWeek = datDate
Else
datDate = DateAdd("d", 7, datDate)
End If
If Year(datDate) > mYear Then
blnStop = True
fnGetDateInWeek = "01-01-1900"
End If
Loop
End Function
 
thanks

thanks,

ik ga ermee aan de slag.

Doei, Tigo
 
Bedankt voor dit script,
Helaas komt het alleen niet goed uit als je bijv. naar week 1 gaat zoeken
van het jaar 2010 want dan komt hij met 01-01-2010 aanzetten die in week 53 ligt van het vorige jaar.

Jaar = 2010
Week = 1
Geeft een MsgBox met als uitkomst, de datum van die week

Code:
Dim blnStop As Boolean
Dim Temp_Date As Date

blnStop = False
Temp_Date = "01-01-" & CStr(Jaar)
Do While blnStop = False
If Format(Temp_Date, "ww") = Week Then
blnStop = True
MsgBox (Temp_Date)
Else
Temp_Date = DateAdd("d", 7, Temp_Date)
End If

If Year(Temp_Date) > Jaar Then
MsgBox ("Fout")
blnStop = True
End If
Loop

Dus als er in een jaar de datum 01-01-jaar
Niet in week 1 valt heb je een probleem.

Heeft er toevallig iemand een simpele oplossing?

Het iedee is eigenlijk om de datum van de eerste maandag van een bepaalde week te onderscheppen.
---------
Ondertussen toch nog zelf opgelossen
Code:
blnStop = False
Temp_Date = "01-01-" & CStr(Jaar)
Temp_Week_Fout = "0"

If Format(Temp_Date, "ddd") = "Vr" Then
Temp_Week_Fout = Temp_Week_Fout + 1
End If
If Format(Temp_Date, "ddd") = "Za" Then
Temp_Week_Fout = Temp_Week_Fout + 1
End If
If Format(Temp_Date, "ddd") = "Zo" Then
Temp_Week_Fout = Temp_Week_Fout + 1
End If

Do While blnStop = False
If Format(Temp_Date, "ww") = Week Then
blnStop = True
Else
Temp_Date = DateAdd("d", 7, Temp_Date)
End If
Loop

If Temp_Week_Fout >= 1 Then
Temp_Date = DateAdd("d", 7, Temp_Date)
End If

MsgBox (Temp_Date)
Als je nog op het laatst de volgende code toevoegd dan komt er altijd de eerste maandag van de opgevraagde week uit.
Code:
If Format(Temp_Date, "ddd") = "Zo" Then
Temp_Date = DateAdd("d", -1, Temp_Date)
End If
If Format(Temp_Date, "ddd") = "Za" Then
Temp_Date = DateAdd("d", -1, Temp_Date)
End If
If Format(Temp_Date, "ddd") = "Vr" Then
Temp_Date = DateAdd("d", -1, Temp_Date)
End If
If Format(Temp_Date, "ddd") = "Do" Then
Temp_Date = DateAdd("d", -1, Temp_Date)
End If
If Format(Temp_Date, "ddd") = "Wo" Then
Temp_Date = DateAdd("d", -1, Temp_Date)
End If
If Format(Temp_Date, "ddd") = "Di" Then
Temp_Date = DateAdd("d", -1, Temp_Date)
End If
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan