Det skyldes sikkert at den definerer uge 1 som værende den første uge i året, hvor der er x-antal hverdage. Kan ikke huske det præcise tal, men jeg er ret sikker på, at det er derfor. Du kan løse det ved at ændre på dine parametre i DatePart...
Function WeekNum(dtDate As Date) As Long Dim lRetVal As Long lRetVal = DateSerial(Year(dtDate + (8 - Weekday(dtDate)) Mod 7 - 3), 1, 1) WeekNum = ((dtDate - lRetVal - 3 + (Weekday(lRetVal) + 1) Mod 7)) \ 7 + 1 End Function
Fra VB5 online hjælp. vbUseSystem 0 Use the NLS API setting. vbFirstJan1 1 Start with week in which January 1 occurs (default). vbFirstFourDays 2 Start with the first week that has at least four days in the new year. vbFirstFullWeek 3 Start with first full week of the year.
Fra mit kalender-projekt. kal er kalender-objektet fra access
datovalg = kal.Value ugenr = DatePart("ww", datovalg, 2, 2) dag = DatePart("w", datovalg, 2) 'dag i ugen dagnr = DatePart("y", datovalg, 2) 'dag i året aar = DatePart("yyyy", datovalg, 2) md = DatePart("m", datovalg, 2) If Len(md) = 1 Then md = "0" & md dato = DatePart("d", datovalg, 2) If Len(dato) = 1 Then dato = "0" & dato
The DatePart function syntax has these named arguments:
Part Description interval Required. String expression that is the interval of time you want to return. date Required. Variant (Date) value that you want to evaluate. firstdayofweek Optional. A constant that specifies the first day of the week. If not specified, Sunday is assumed. firstweekofyear Optional. A constant that specifies the first week of the year. If not specified, the first week is assumed to be the week in which January 1 occurs.
Settings
The interval argument has these settings:
Setting Description yyyy Year q Quarter m Month y Day of year d Day w Weekday ww Week h Hour n Minute s Second
The firstdayofweek argument has these settings:
Constant Value Description vbUseSystem 0 Use the NLS API setting. vbSunday 1 Sunday (default) vbMonday 2 Monday vbTuesday 3 Tuesday vbWednesday 4 Wednesday vbThursday 5 Thursday vbFriday 6 Friday vbSaturday 7 Saturday
The firstweekofyear argument has these settings:
Constant Value Description vbUseSystem 0 Use the NLS API setting. vbFirstJan1 1 Start with week in which January 1 occurs (default). vbFirstFourDays 2 Start with the first week that has at least four days in the new year. vbFirstFullWeek 3 Start with first full week of the year.
Remarks
You can use the DatePart function to evaluate a date and return a specific interval of time. For example, you might use DatePart to calculate the day of the week or the current hour.
The firstdayofweek argument affects calculations that use the "w" and "ww" interval symbols.
If date is a date literal, the specified year becomes a permanent part of that date. However, if date is enclosed in double quotation marks (" "), and you omit the year, the current year is inserted in your code each time the date expression is evaluated. This makes it possible to write code that can be used in different years.
Note For date, if the Calendar property setting is Gregorian, the supplied date must be Gregorian. If the calendar is Hijri, the supplied date must be Hijri.
The returned date part is in the time period units of the current Arabic calendar. For example, if the current calendar is Hijri and the date part to be returned is the year, the year value is a Hijri year.
Tak for alle svarene. Jeg har lært en masse af alles svar. Jeg troede, at jeg havde godkendt dem, men nu er der kommet flere. Jeg har afprøvet de første svar, og kan med sikkerhed sige, at flemmingdahl´s svar var det eneste rigtige på det tidspunkt. Nu vil jeg gå igennem terry´s store vejledning, og øve mig i denne, her kan jeg sikkert lære en masse. Men prisen går til det første rigtige svar: flemmingdahl. Endnu engang tak for hjælpen.
Alle sammen >> Jeg kan stadigvæk ikke "grib" hvad er forkert.
Spotpart har den rigtig svar...lidt kort, men rigtig. Den eneste ting flemmingdahl's function gøre er lig hvad DatePart gøre med firstdayofweek = vbMonday.
Terry >> Re: "In Denmark the week starts on a Monday, not on a Sunday as in USA!" - I'm guessing he's in Danmark and has the standard International settings for Danmark so vbUseSystemDayOfWeek and vbUseSystem should do it.
Så: Anybody care to explain to me why Spotpart's answer was wrong? rsa never said his results were wrong..."Er der nogen der ved, hvordan dette hænger sammen?"...
Jeg har afprøvet alle svarene, og det eneste der gav det rigtige resultat var flemmingdahl's. Prøv selv med datoen: 29-12-03. Denne dato giver i næsten alle tilfældene et ugenr: 53 og dag i ugen = 1. Det er forkert. Det skal være uge 1. Hilsen rsa
amerikaner, I would alos have thought that other answers would have worked. I have NO idea how is PC is set up, but I do know the answer I gave works no matter what the regional settings are.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.