• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Weeknummer in VBA

Status
Niet open voor verdere reacties.

MayNiak666

Gebruiker
Lid geworden
6 jan 2003
Berichten
234
Hallo mede strijders,

Het is lang geleden dat ik me hier heb vertoond, maar ik ben op een punt gekomen dat ik jullie hulp nodig heb. Het gaat om het volgende.

Jan van Asseldonk heeft ons er allemaal op gewezen dat de standaard Excel-functie Weeknummer niet altijd de correcte waarde geeft. Hij heeft ons een formule aan de hand gedaan, die wel correct werkt. Nu heb ik geprobeerd deze functie om te zetten nar VBA-code, maar er klopt iets niet. Wat heb ik fout gedaan? Dit is de code:
Function Weeknr() As Date
Application.Volatile
Weeknr = 1 + Int((Date - DateSerial(Year(Date + 4 - (Weekday(Date) + 6)), 1, 5) + Weekday(DateSerial(Year(Date + 4 - (Weekday(Date) + 6)), 1, 3))) / 7)
End Function


Vervolgens zoek ik een manier om met behulp van een weeknummer en een jaartal terug te rekenen naar de eerste dag van dat weeknummer. Wie heeft er een idee?

gr. René
 
Rene,

Volgens mij kun je dit het beste oplossen door de datum van de eerste maandag van het jaar te bepalen en daarbij op te tellen het produkt van weeknummer * 7

 
René,

Waarom VBA, zo gaat het toch ook:
Ben geen VBA specialist, als je via Google zoekt kun je het vast wel ergens vinden.
 

Bijlagen

iedereen bedankt voor de reacties, vooral de site van Pearson is een grote bron van inspiratie:thumb: Ik hoop me hier weer eens wat vaker te melden, niet alleen voor vragen, maar hopelijk ook eens met een antwoord....

greetz, René
 
Toch nog even de goeie formule in VBA....

Het was wat puzzelen, maar hier en daar een haakje anders geplaatst, en toen deed de formule het wel goed. Dus:

Function Weeknr() As Integer
Application.Volatile
Weeknr = 1 + Int((Date - DateSerial(Year(Date + 4 - WeekDay(Date + 6)), 1, 5) + WeekDay(DateSerial(Year(Date + 4 - WeekDay(Date + 6)), 1, 3))) / 7)
End Function

Levert het actuele weeknummer op van vandaag. Geheel volgens ISO-standaard. Plaatsen in Module 1 van je VBA-project, en je kunt de functie in je hele werkmap gebruiken.
Voor de liefhebber.
 
Plaatsen in Module 1 van je VBA-project, en je kunt de functie in je hele werkmap gebruiken.

Maakt niet uit in welke module, als het maar geen klassenmodule is. (En ook niet achter één van je werkbladen.) Insert > Module doen is het veiligste als je niet zeker bent.

Bedankt René om de oplossing te posten.

Wigi
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan