• 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 tonen op basis van huidige datum

Status
Niet open voor verdere reacties.

harrybrinkman

Gebruiker
Lid geworden
7 nov 2019
Berichten
112
Besturingssysteem
Windows 11 home
Office versie
Ms Office 365
LS,

Ik heb een bestand (soort roostertje) waarin ik elke dag van het jaar een kolom heb gegeven. Nu zoek naar een methode om de kolommen met data in het verleden niet meer te tonen (niet verwijderen!) Dus bij het openen van het bestand een controle van de datum van vandaag en alle kolommen die eerdere data hebben verbergen.

Vast niet superingewikkeld, maar ik krijg het niet voor elkaar

ps. leeg bestand meegezonden als voorbeeld.

Alvast bedankt
Harry Brinkman
 

Bijlagen

Deze aanroepen vanuit Workbook_Open event:
Code:
Sub HideColumns()
    Set c = Rows(2).Find(What:=Date)
    If Not c Is Nothing Then
        kol = c.Column
        Columns(4).Resize(, kol - 4).EntireColumn.Hidden = True
    Else
        MsgBox "Datum niet gevonden", vbCritical, "Foutmelding"
    End If
End Sub
 
@ AHulpje,

Ben je zeker dat deze werkt (vermits er geen datums maar formules in rij 2 staan)
Code:
Set c = Rows(2).Find(What:=Date)

@ harrybrinkman

Probeer anders dit eens:
Code:
Sub HideColumns()
On Error Resume Next
kol = WorksheetFunction.Match(CDbl(Date), Rows(2), 0)
On Error GoTo 0
If kol Then
    Columns(4).Resize(, kol - 4).EntireColumn.Hidden = True
Else
    MsgBox "Datum niet gevonden", vbCritical, "Foutmelding"
End If
End Sub
 
IF zonder vergelijking??

LS,

ik heb de methode van Ahulpje geprobeerd, maar die geeft de gemaakte MsgBox. In rij 2 staat alleen in de eerste datumkolom een echte datum, de rest is steeds de vorige kolom +1

Vervolgens de methode van Enigmasmurf geprobeerd, maar die komt er helemaal niet uit. Kan het zijn dat er na de IF nog een vergelijking gegeven moet worden? er staat nu
Code:
IF kol Then
??
 
Ook zonder dat te proberen weet ik pertinent zeker dat het bij mij zo zal werken.
Maar ik kan me ook goed voorstellen dat het afhankelijk kan zijn van de Office-versie.
Maak van die regel dan maar
Code:
IF kol > 0 Then
Dat je dat zelf niet eens probeert...
 
De oplossing van enigmasmurf werkt bij mij prima, maar onderstaande oplossing ook, heb het voor de duidelijkheid in twee regels gedaan, als je wilt kun je er nog een one-liner van maken:
Code:
Sub HideColumns()
    kol = DateDiff("d", "1-1-" & Year(Date), Date)
    Columns(4).Resize(, kol).EntireColumn.Hidden = True
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan