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

Kolommen met weeknummers verbergen tot weeknummer van huidige datum

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

LJA

Gebruiker
Lid geworden
23 mrt 2017
Berichten
23
Goededag,

Ik wil graag met VBA kolommen met voorafgaande weeknummers verbergen tot het weeknummer van de in cel "B3" ingevulde datum.
In de bijgevoegde planning worden nu de kolommen "K tot en met AE" verborgen door de volgende VBA-code, die met een button boven cel "I3" op de planning geactiveerd kan worden.
Code:
Sub KollommenWekenVerbergen()
'
' KollommenLibreVerbergen Macro
'

'
    Columns("K:AE").EntireColumn.Hidden = True
    Range("I2").Select
End Sub

Nou wil ik in bovenstaande code de kolomaanduiding "AE" automatisch aan laten passen op basis van de in cel "B3" ingevulde datum.
Daarbij moet op basis van de in cel "B3" ingevulde datum eerst gezocht worden naar het juiste jaartal. Deze staan in de cellen "K1", "BK1", "DK1", etc.
Vervolgens dient vanaf de kolom met het overeenkomende jaartal in rij "5" naar het overeenkomende weeknummer gezocht worden.
Wanneer het weeknummer met de in cel "B3" ingevulde datum overeenkomt, dient de kolomaanduiding bepaald te worden en in de VBA-code gebruikt te worden.

Voorbeelden:
De in cel "B3" ingevulde datum "wo 31-05-2017" bevindt zich in het jaartal "2017" (= cel "K1") en vervolgens is het weeknummer "22" (= kolom "AF").
De VBA-code is dan zoals hierboven getoond.
Stel dat de datum "do 20-09-2018" in cel B3" is ingevuld, dan bevindt deze datum zich in het jaartal "2018" (=cel "DK1") en vervolgens is het weeknummer "38" (= kolom "CV").
De VBA-code zou dan als volgt dienen te zijn, waarbij "AE" vervangen is door "CV":
Code:
Sub KollommenWekenVerbergen()
'
' KollommenLibreVerbergen Macro
'

'
    Columns("K:CV").EntireColumn.Hidden = True
    Range("I2").Select
End Sub

Ik hoop dat iemand mij kan helpen om de bovenstaande VBA-code zo op te stellen, dat met de juiste kolomaanduiding op basis van de in cel "B3" datum de juiste kolommen verborgen worden.
Bij voorbaat hartelijk dank voor de hulp!

Bekijk bijlage PlanningX.xlsm
 
Code:
Sub KollommenWekenVerbergen()
Columns(11).Resize(, ((Year(Range("B3")) - Year(Now)) * 52) + DatePart("ww", Range("B3"), 2, 2) - 1).EntireColumn.Hidden = True
End Sub

Sub KollommenWekenZichtbaar()
Columns(11).Resize(, ((Year(Range("B3")) - Year(Now)) * 52) + DatePart("ww", Range("B3"), 2, 2) - 1).EntireColumn.Hidden = False
End Sub

EDIT:
Stel dat de datum "do 20-09-2018" in cel B3" is ingevuld, dan bevindt deze datum zich in het jaartal "2018" (=cel "DK1") en vervolgens is het weeknummer "38" (= kolom "CV").
aangepast om het ook voor hiervoor te laten werken
 
Laatst bewerkt:
LJA, kun je vertellen hoe je de weken indeeld?

bvb week 1 begint altijd op 1 januari , of ......

in sommige systemen begint week 1 niet altijd op de zelfde datum.
 
Laatst bewerkt:
Hartelijk bedankt !

#Gijsbert1
Hartelijk dank voor de snelle reactie EN oplossing!! :thumb:

Ik heb nog een kleine regel toegevoegd, zodat de code voor het verbergen ook werkt, wanneer je van een latere datum naar een eerdere datum (voor de laatst ingevoerde en gebruikte datum) terug gaat.
(Dan moeten eerst de kolommen tussen de latere en eerdere datum weer zichtbaar gemaakt worden, anders blijven deze verborgen.
Ik heb dit opgelost door eerst alle kolommen met weeknummers weer zichtbaar te maken.)
Code:
Sub KollommenWekenVerbergen()
    Columns("K:XFD").EntireColumn.Hidden = False
    Columns(11).Resize(, ((Year(Range("B3")) - Year(Now)) * 52) + DatePart("ww", Range("B3"), 2, 2) - 1).EntireColumn.Hidden = True
End Sub


#sylvester-ponte
Gezien ik in Europa leef, heb ik voor de Europese weeknummering gekozen, waarbij de eerste maandag van het jaar in weeknummer 01 valt.

Ik heb de weeknummers als volgt ingedeeld:
wanneer de eerste dag van de maand een werkdag is (dus een maandag, dinsdag, woensdag, donderdag of vrijdag), valt het weeknummer in de betreffende maand.

Voorbeelden:
Maandag 1 mei 2017 valt in weeknummer 18 en dit weeknummer is ingedeeld in de maand mei.
Dinsdag 1 augustus 2017 valt in weeknummer 31 en dit weeknummer is ingedeeld in de maand augustus.
Vrijdag 1 september 2017 valt in weeknummer 35 en dit weeknummer is ingedeeld in de maand september.
Zondag 1 oktober 2017 valt in weeknummer 39 en dit weeknummer is ingedeeld in de maand september.

In mijn planning zijn de weeknummers gewoon getallen (Ik heb hier geen formules gebruikt).
Ik heb ervoor gekozen alle weeknummers in twee getallen weer te geven, door de volgende celeigenschap bij de cellen met weeknummers in te stellen:
Celeigenschappen > Getal > Aangepast > Type : 00

De maanden boven de weeknummers worden met onderstaande formule vermeld, waarbij in de cel "K1" het jaartal 2017 staat.
Dit is de formule, die in de cel "AX3" boven weeknummer 40 van 2017 staat (en gekopieerd is naar de naastliggende cellen):
Code:
=ALS(AANTAL.ALS(AT3:AW3;BEGINLETTERS(TEKST(DATUM($K$1;AFRONDEN.NAAR.BOVEN(AX4/52*12;0);1);"mmm")))<1;BEGINLETTERS(TEKST(DATUM($K$1;AFRONDEN.NAAR.BOVEN(AX4/52*12;0);1);"mmm"));"")
 
Laatst bewerkt:
Ha LJA,

Prima toch dat het zo werkt! :thumb:
Zat nog te denken dat het ook beter is om de regel die je erbij hebt gezet ook te gebruiken bij "KolommenWekenZichtbaar" en de huidige regel daar te verwijderen.
Want stel dat je weer zichtbaar gaat maken met een "eerdere datum"; dan wordt niet alles zichtbaar!
Code:
Sub KolommenWekenVerbergen()
Columns("K:XFD").EntireColumn.Hidden = False
Columns(11).Resize(, ((Year(Range("B3")) - Year(Now)) * 52) + DatePart("ww", Range("B3"), 2, 2) - 1).EntireColumn.Hidden = True
End Sub

Sub KolommenWekenZichtbaar()
Columns("K:XFD").EntireColumn.Hidden = False
End Sub
 
Kijk, zo komen we er samen uit! :)
Nogmaals heel erg bedankt!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan