Hur kan jag smidigast räkna ut datum för den sista söndagen Jag skulle nog tagit fram dagen för den 1 i varje månad eftersom en månad alltid börjar på 1. En funktion som gör detta. Sammanstället en generell funktion: Jannes exempel funkar utmärkt. TACKAR! Jag blandade Jannes och Andreas recept och fick en ny bakelse... Hittar inga problem med min funktion. Skickar du in rätt värde för intWeekDay parametern:Räkna ut sista söndagen...
i en månad.
mvh
TobbeSv: Räkna ut sista söndagen...
Då vet man att det är ex. Tisdag och du vet att det är 2 dagar sedan som det var söndag.
Vilket dagsnummer det är kan du få ut med WeekDay() kolla dock så du börjar räkna på en måndag och inte söndag som det görs default.
Då tar du och använder DateDiff("d",DAGAR_TILL_SÖNDAG,DATUM_FÖR_DEN_FÖRST_I_MÅNADEN)
MVH
MagnusSv: Räkna ut sista söndagen...
<code>
Response.Write LastSunday(8,2002)
Function LastSunday(intMonth, intYear)
For i = 31 To 28 Step -1
dteLastDay = intYear&"-"&intMonth&"-"&i
If IsDate(dteLastDay) Then dteLastDay = Cdate(dteLastDay) : Exit For
Next
LastSunday = DateAdd("d",0-(DatePart("w",dteLastDay,1)-1),dteLastDay)
End Function
</code>
Löst detta ditt problem?
/JanneSv: Räkna ut sista söndagen...
<code>
Function LastWeekday(intYear, intMonth, Optional intWeekDay = vbSunday)
LastWeekday = DateSerial(intYear, intMonth + 1, 0)
LastWeekday = LastWeekday - (Weekday(LastWeekday, intWeekDay) - 1)
End Function
</code>
Där man anger vilken av månadens sista veckodagar man vill plocka ut.
Istället för en loop, beräknar jag antalet dagar och subtraherar det.Sv: Räkna ut sista söndagen...
Vilka parametrar kan jag ändra för att visa valfri dag i veckan
till exempel 2:a onsdagen eller 1:a tisdagen etc.?
Andreas exempel visar den NÄST sista söndagen.
Säkert kan en mindre korrigering fixa detta !?
mvh
TobbeSv: Räkna ut sista valfri dag i månad...
Håll till godo... den verkar vara "buggfri"
Ändra input efter eget önskemål i Ar, Manad och Dag
---------------------------------------------------------
Ar = 2002
Manad = 1
Dag = 7
LastDayOfMonth = DateSerial(Ar, Manad + 1, 0)
For i = LastDayOfMonth To 1 Step -1
If WeekDay(i,vbMonday) = Dag Then
Response.Write(i)
Exit For
End If
Next
---------------------------------------------------------
mvh
TobbeSv: Räkna ut sista söndagen...
0 = vbUseSystemDayOfWeek
1 = vbSunday
2 = vbMonday
3 = vbTuesday
4 = vbWednesday
5 = vbThursday
6 = vbFriday
7 = vbSaturday
Vilket är standard konstanter för vb. Så om du anger 7 så får du sista lördagen i veckan.
Om du envisas med en for-sats/loop. Så är det betydligt enklare att bara skriva:
Do Until Weekday(LastWeekday, vbMonday) = Dag
LastWeekday = LastWeekday - 1
Loop