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

Automatisch kolommen verbergen aan de hand van de week

Status
Niet open voor verdere reacties.

MrSpock

Gebruiker
Lid geworden
1 nov 2022
Berichten
19
Een dubbel check
Ik wil op het invoerblad graag automatisch de weken verbergen die al geweest zijn.
Na het zoeken in het excel forum kwam ik de volgende code tegen
Als ik het goed heb zou ik het stukje (Year(Range("B3")) kunnen verwijderen en dan zou dit moeten werken
Klopt dit
Code:
Sub KollommenWekenVerbergen()
Columns(11).Resize(, ((Year(Range("B3")) - Year(Now)) * 52) + DatePart("ww", Range("B3"), 2, 2) - 1).EntireColumn.Hidden = True
End Sub
 

Bijlagen

Laatst bewerkt:
Aan je document te zien vermoed ik dat je rijen wilt verbergen in plaats van kolommen.
Dus bijvoorbeeld alle rijen verbergen waarvoor de datum in kolom A ligt vóór de datum van afgelopen maandag, klopt dat?
 
Van boven naar beneden is toch kolommen ?
Anders heb ik mij inderdaad vergist
Het gaat er om dat ik inderdaad als bijvoorbeeld week 43 voorbij is dat alles van de invoer en data verbergt
 
Dan denk ik dat je voorbeeldbestand niet het juiste is.
 
Hallo Ahulpje bedankt voor je opmerkzaamheid
Inmiddels het goede bestand bijgevoegd
 
Je datamodel behoeft enige verbetering.
Voor een volledig jaar heb je 52 x 10 kolommen nodig!
Je berekende cellen zijn niet beschermd.
Er is geen koppeling tussen je vijf I-pack werkbladen en het invoerblad.
Je worksheet_Change sub zou voor een heel jaar 5 x 52 vrijwel identieke berekeningen bevatten, dat kan ook met één berekening.
Je Module1 heb ik maar comment van gemaakt, Sub Clearcells ruimt een verkeerde range op en de eerste sub is geen sub.
In je grafiek op werkblad Totaal worden jouw weeknummers als foutaantallen beschouwd en zo kan ik nog wel even doorgaan.
Ondanks dat, met deze code kun je de kolommen t/m vorige week op werkblad invoer verbergen:

Code:
Sub HideColumns()
    Sheets("Invoer").Activate
    vorigeweek = Format(DatePart("ww", Date - Weekday(Date, 2) + 4, 2, 2) - 1, "00")
    Set c = Rows(4).Find(What:="Week " & vorigeweek)
    If Not c Is Nothing Then
        kol = c.Column
        Columns(6).Resize(, kol + 3).EntireColumn.Hidden = True
    Else
        MsgBox "Week niet gevonden", vbCritical, "Foutmelding"
    End If
End Sub
 
Bedankt

Dacht tot ik toch aardig ver was gekomen voor een beginneling.
Klopt dat een jaar 52 weken heeft, dit is voor dit jaar bedoeld en om te kijken of het werkt.
Werkt het dan zullen er inderdaad een hoop verbeteringen in moeten gemaakt worden.
Maar je weet wat ze zeggen al doende leert men
Ieder geval bedankt eerst maar is proberen om de fouten die je beschrijft te op te lossen en dan ga ik met de oplossing die je gegeven hebt aan de slag
 
Om je toch een beetje op weg te helpen hierbij een sterk verkorte versie van je Worksheet_Change sub:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Row >= 5 And Target.Row <= 36 And Cells(3, Target.Column) = "Invoer" And Target.Count = 1 Then Target.Offset(0, 1) = Target.Offset(0, 1) + Target
End Sub
P.S.
Is dit juist: "Storing algeen luchtdruk"
en gelijmt is met een d.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan