• 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.

Dag van de week?

  • Onderwerp starter Onderwerp starter DZP
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

DZP

Gebruiker
Lid geworden
26 feb 2007
Berichten
242
Code:
Public Function IsoWeekNumber(d1 As Date) As Integer
' Attributed to Daniel Maher
    Dim d2 As Long
    d2 = DateSerial(Year(d1 - Weekday(d1 - 1) + 4), 1, 3)
    IsoWeekNumber = Int((d1 - d2 + Weekday(d2) + 5) / 7)
End Function
Ik wil graag de begindag van de week veranderen, en de code begrijpen, dus misschien is er iemand die kan vertellen waarvoor de:
d1
-1
+4
1
3
-d2
+5
/7
Staan?
 
DZP, Met het veranderen van de 1e dag ga je ook je weeknummers veranderen... Volgens mij is het volgens de ISO-norm dat in europa de week loopt van maandag t/m zondag. Hier zijn alle kalenders op gebaseerd.
Om een sub of een functie 'uit te pluizen' is het leuk om in je VBE de immediate window open te zetten. Zet dan in je code aan het begin in de kantlijn zo'n 'rode punt' (breakpoint) en laat de code lopen (bij een sub kan je gewoon op F8 drukken en door je code lopen). Als je dan in je worksheet je functie 'entert', zal de code stoppen bij het breakpoint. Je kan dan heel je code in stukjes knippen in je immediate window om te kijken wat het voor reacties geeft.

Groet, Leo

EDIT:
DZP zei:
Ja, ja, ik weet het: RTFM
...??? Wat betekent dat???
 
Laatst bewerkt:
Ik kom er toch nog niet uit:
De code is perfekt maar: ik wil graag 1 week verder dan de macro aangeeft dus als het week 1 is zoals nu, wil ik graag het tabblad met de 2 actief hebben bij het opstarten van het bestand. (Ik moet namelijk in de toekomst werken!!).
Code:
De + 4 staat voor: dagen naar voren (maar die gaat niet verder dan 6).
De  / 7 staat voor: gedeeld door de dagen van de week (verandering naar / 5 geeft week 2 (maar dat is niet goed)).
Er staan ook andere tabbladen tussen dus onderstaande code werkt niet!!
Code:
Sheets(ActiveSheet.Index + 1).Select
 
Laatst bewerkt:
Code:
Public Function IsoWeekNumber(d1 As Date) As Integer
' Attributed to Daniel Maher
    Dim d2 As Long
    d2 = DateSerial(Year(d1 - Weekday(d1 - 1) + 4), 1, 3)
    IsoWeekNumber = Int((d1 - d2 + Weekday(d2) + 5) / 7)
End Function
Code:
Sheets(ActiveSheet.Index + 1).Select
Toch maar bovenstaande codes gebruikt en de tabbladen opgeschoven.
(Zo kan ik in ieder geval 51 weken vooruit).
 
DZP, Het is slechts een kleine toevoeging aan een regel om de 'volgende week' als resultaat uit de functie te halen
Code:
IsoWeekNumber = Int((d1 - d2 + Weekday(d2) + 5) / 7) [B][COLOR="Blue"]+ 1[/COLOR][/B]
In het workbook_open event zet je dan
Code:
Sheets(IsoWeekNumber).Select

Je zal dan nog wel iets aan error handling moeten doen, voor het geval dat je sheet niet bestaat...

Groet, Leo
 
Laatst bewerkt:
De regel van het 'workbook_open event' werkt niet???

Groet, Leo
 
Code:
Public Function IsoWeekNumber(d1 As Date) As Integer
' Attributed to Daniel Maher
    Dim d2 As Long
    d2 = DateSerial(Year(d1 - Weekday(d1 - 1) + 4), 1, 3)
    IsoWeekNumber = Int((d1 - d2 + Weekday(d2) + 5) / 7) [COLOR="Blue"][B]+ 1[/B][/COLOR]
End Function
Ik heb het hier verandert en dat werkt goed.
Code:
ThisWorkbook.Sheets(SNaam & IsoWeekNumber(Date)).Select
En dit werkt dan ook!
 
Laatst bewerkt:
Functie

Code:
=LINKS(TEKST(E3; "dddd");2)

Geeft ook de dag aan.
 
Laatst bewerkt door een moderator:
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan