Jag försöker skapa en funktion som returnerar datumet för senaste söndagen. Tyvärr returnerar den måndagens datum. Är det någon som ser vad jag gör för fel? Function GetLastSunday() Eftersom weekday returnerar 1 för måndag, 2 för tisdag osv så kan man bara subrahera det antalet dagar från datumet för att få föregående söndag. Vilket resultat vill du ha på en söndag?GetLastSunday
Function GetLastSunday()
Dim dDate
Dim i
For i = 1 To 7
dDate = DateAdd("d", -i, Date)
If Weekday(dDate, vbMonday) = vbSunday Then
GetLastSunday = dDate
Exit For
End If
Next
End FunctionSv: GetLastSunday
Dim dDate
Dim i
For i = 1 To 7
dDate = DateAdd("d", -i, Date)
If Weekday(dDate, vbSunday) = vbSunday Then
GetLastSunday = dDate
Exit For
End If
Next
End Function
eller
Function GetLastSunday()
Dim dDate
Dim i
For i = 1 To 7
dDate = DateAdd("d", -i, Date)
If Weekday(dDate, vbMonday) = 7 Then
GetLastSunday = dDate
Exit For
End If
Next
End Function
vbSunday = 1
alltså måndag när du använder vbMonday som start på veckanSv: GetLastSunday
Alt.1
På en söndag returneras förra söndagen
Function GetLastSunday(Date d) As Date
GetLastSunday = DateAdd("d", -Weekday(d, vbMonday), d)
End Function
Alt.2
På en söndag returneras samma datum
Function GetLastSunday(Date d) As Date
GetLastSunday = DateAdd("d", -(Weekday(d, vbMonday) Mod 7), d)
End Function