[VBA-Excel] Weeknummers bepalen

Pagina: 1
Acties:
  • 2.150 views sinds 30-01-2008
  • Reageer

  • Rotjeknor
  • Registratie: April 2001
  • Laatst online: 03-02 15:29
Excel heeft een functie weeknum (analysis toolpak), deze klopt voor 2005 niet, althans, niet confirm iso standaard die zegt dat week 1 begint met de eerste maandag van januari.

Zie ook http://www.cpearson.com/excel/weeknum.htm

Nu heb ik een formule gevonden die het juiste weeknummer bepaalt, deze wil ik echter in een VBA functie hebben om het niet steeds te kopieren. Hier krijg ik echter een syntax error op. Nu weet ik zelf weinig van VBA, ik heb nog gepoogd in de VBA Editor erachter te komen wat er aan de hand is, maar tot nu toe met weinig resultaat.

Datum (Veld A4):
code:
1
03-01-2005


Excel weeknum:
code:
1
=WEEKNUM(A4)

>>> geeft 2 terug (fout)

Formule:
code:
1
=INT((A4-SUM(MOD(DATE(YEAR(A4-MOD(A4-2,7)+3),1,2),{1E+99,7})*{1,-1})+5)/7)

>>> geeft 1 terug (goed)

VBA:
code:
1
2
3
Function VBAWeekNum(InputDate As Date)
     VBAWeekNum = INT((InputDate-SUM(MOD(DATE(YEAR(InputDate-MOD(InputDate-2,7)+3),1,2),{1E+99,7})*{1,-1})+5)/7)
End Function


Gebruik:
code:
1
=VBAWeekNum(A4)

>>> Syntax error

Wat doe ik fout in die functie?

Ook Knor is aangestoken met het ligfietsvirus!


  • WvdWest
  • Registratie: Augustus 2002
  • Niet online
Waarom knip je de functie niet in stukjes en probeer je erachter te komen welk stuk de problemen geeft. Probeer ook met de debugger te werken zodat je kan zien wat er gebeurt.
edit:

Op de pagina van die link die je geeft staat een complete VBA functie. Waarom gebruik je die niet?

[ Voor 78% gewijzigd door WvdWest op 08-09-2004 09:48 ]

I'm not a complete idiot - several parts are missing.


  • Maasluip
  • Registratie: April 2002
  • Laatst online: 21-05 16:34

Maasluip

Kabbelend watertje

Een beetje googelen leverde mij deze pagina waar blijkt dat volgens ISO de eerste week de week is waarin de eerste donderdag valt. Op diezelfde pagina staan wat links naar (o.a.) Excel functies hiervoor.

De functie die jij hebt werkt niet altijd in 1904 datumsysteem en is een Excel functie, geen VBA functie.

[ Voor 19% gewijzigd door Maasluip op 08-09-2004 09:49 ]

Signatures zijn voor boomers.


Verwijderd

een aantal dingen:

- het vba mod statement verschilt syntactisch van de mod werkblad functie.
- dan nog maakt de formule gebruik van matrices, wat niet zomaar werkt in vba.

je kan beter de vba code gebruiken van john green die op de webpagina staat die je zelf aangeeft.

  • Rotjeknor
  • Registratie: April 2001
  • Laatst online: 03-02 15:29
Verwijderd schreef op 08 september 2004 @ 09:50:
je kan beter de vba code gebruiken van john green die op de webpagina staat die je zelf aangeeft.
Ach shit, compleet overheen gelezen. |:( Deze functie werkt inderdaad...
Toch bedankt voor de reacties!

Ook Knor is aangestoken met het ligfietsvirus!