• 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 verbergen dmv Macro

Status
Niet open voor verdere reacties.

eelco42

Gebruiker
Lid geworden
21 mrt 2016
Berichten
28
Hallo,

Ik heb momenteel een werkende macro die ervoor zorgt dat kolommen verborgen worden.
Op dit moment moet de 'start bouw' in maand 6 plaatsvinden om de macro te laten werken. De 'bouwtijd in maanden' is hierbij wel variabel. Hoe krijg ik de macro werkend zodat de bouwtijd in maanden en de start bouw variabel zijn?

Bekijk bijlage Rekenschema.xlsm

Huidige macro:
.....
If Range("A14").Value = "1" Then
Columns("F:L").EntireColumn.Hidden = False
Else
Columns("M:AD").EntireColumn.Hidden = True
End If
If Range("A14").Value = "2" Then
Columns("F:M").EntireColumn.Hidden = False
Else
Columns("N:AD").EntireColumn.Hidden = True
.....

Wat ik dus eigenlijk wil is:
If (A14+A17).Value = "5" Then
Columns("F:K").EntireColumn.Hidden = False
Else
Columns("L:AD").EntireColumn.Hidden = True
End If
.....
 
Probeer het eens zo:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A14,A17")) Is Nothing Then
        Columns("F:AD").Hidden = False
        Columns(6).Offset(, [A17] + [A14]).Resize(, 25 - [A14] - [A17]).Hidden = True
    End If
End Sub
 
Probeer het eens zo:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A14,A17")) Is Nothing Then
        Columns("F:AD").Hidden = False
        Columns(6).Offset(, [A17] + [A14]).Resize(, 25 - [A14] - [A17]).Hidden = True
    End If
End Sub

Thanks, dit werkt goed.
Ik heb alleen wat veranderd aan m'n excel blad, waardoor de macro info van een ander tabblad moet halen. Dit hoor ik dan toch gewoon zo in te vullen, of doe ik nu iets fout?

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("Input!O18,Input!N17")) Is Nothing Then
        Columns("B:AD").Hidden = False
        Columns(2).Offset(, [Input!N17] + [Input!O18]).Resize(, 30 - [Input!O18] - [Input!N17]).Hidden = True
    End If
End Sub
 
Als het niet werkt denk ik dat je iets fout doet :P
De Worksheets_Change-routine wordt getriggerd door celmutaties in het werkblad waar het achter zit.
Celmutaties in een ander werkblad triggeren de routine niet.
Als je er niet uitkomt, plaats dan een beter voorbeeld.
 
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("O49,N50")) Is Nothing Then
        Columns("V:AX").Hidden = False
        Columns(22).Offset(, [N50] + [O49]).Resize(, 29 - [N50] - [O49]).Hidden = True
        With Sheets("Rekenschema")
            .Columns("F:AE").Hidden = False
            .Columns(6).Offset(, [N50] + [O49]).Resize(, 26 - [N50] - [O49]).Hidden = True
        End With
    End If
End Sub
Voor de duidelijkheid: deze code moet achter werkblad 'input' geplaatst worden. De code die nu achter werkblad 'rekenschema' zit moet je verwijderen: deze veroorzaakt alleen maar fouten.
 
Laatst bewerkt:
Thanks, nu lukt het. Ik probeer hetzelfde te doen voor het tabblad 'dashboard', maar daar lukt het mij nog niet. Het gaat hier echter om kwartalen, dus deel ik de weken door 3

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("O41,N42")) Is Nothing Then
        Columns("V:AX").Hidden = False
        Columns(22).Offset(, [N42] + [O41]).Resize(, 29 - [N42] - [O41]).Hidden = True
        With Sheets("Rekenschema")
            .Columns("F:AE").Hidden = False
            .Columns(6).Offset(, [N42] + [O41]).Resize(, 26 - [N42] - [O41]).Hidden = True
        End With
        With Sheets("Dashboard")
            .Columns("G:P").Hidden = False
            .Columns(8).Offset(, [N42*1/3] + [O41*1/3]).Resize(, 16 - [N42*1/3] - [O41*1/3]).Hidden = True
        End With
    End If
End Sub
 
Voor het werkblad Dashboard is de startweek niet relevant als ik het zo zie.
Benieuwd of dit is wat je bedoelt:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("O49,N50")) Is Nothing Then
        Columns("V:AX").Hidden = False
        Columns(22).Offset(, [N50] + [O49]).Resize(, 29 - [N50] - [O49]).Hidden = True
        With Sheets("Rekenschema")
            .Columns("F:AE").Hidden = False
            .Columns(6).Offset(, [N50] + [O49]).Resize(, 26 - [N50] - [O49]).Hidden = True
        End With
        With Sheets("Dashboard")
            .Columns("F:P").Hidden = False
            .Columns(6).Offset(, [RoundUp(N50 / 3, 0)]).Resize(, 11 - [RoundUp(N50 / 3, 0)]).Hidden = True
        End With
    End If
End Sub
 

Bijlagen

Laatst bewerkt:
Dank voor de hulp, maar ik kom er nog niet helemaal uit...

Bekijk bijlage Rekenschema Nieuwbouwproject 2.xlsm

Wat er tot nu toe in zit:
Als start bouw + bouwtijd in maanden = 15 maanden, dan gaat het schema in 'input' en 'rekenschema' tot maand 14. Hier hoeft niks aan te veranderen.

Wat ik dus wil is dat het schema in 'dashboard' tot het juiste kwartaal gaat, dus tot het kwartaal dat bij maand 14 hoort.
Q-1 = maand -3, -2 en -1
Q1 = maand 0, 1 en 2
Q2 = maand 3, 4 en 5
enzovoorts....
 
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("O41,N42")) Is Nothing Then
        Columns("V:AX").Hidden = False
        Columns(22).Offset(, [N42] + [O41]).Resize(, 29 - [N42] - [O41]).Hidden = True
        With Sheets("Rekenschema")
            .Columns("F:AE").Hidden = False
            .Columns(6).Offset(, [N42] + [O41]).Resize(, 26 - [N42] - [O41]).Hidden = True
        End With
        With Sheets("Dashboard")
            .Columns("G:P").Hidden = False
            .Columns(8).Offset(, [RoundUp((N42 + O41) / 3, 0)]).Resize(, 10 - [RoundUp((N42 + O41)/ 3, 0)]).Hidden = True
        End With
    End If
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan