Ga naar inhoud

kolommen en rijen verbergen met vba


rudi d.

Aanbevolen berichten

Ik gebruik Excel al een hele tijd, maar wil nu bepaalde kolommen en rijen tegelijkertijd verbergen. Na wat opzoekwerk VBA tegengekomen en wil niet echt lukken.

Bedoeling is om in A1 bv de waarde 1 in te geven, dan moeten kolommen D-F-H-M-O-Q en rijen van 2 tem 11 verborgen zijn.

 

Als ik 1 kolom wil verbergen lukt dit met:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Range("A1").Value = 1 Then
        Columns("D:D").Select
    Selection.EntireColumn.Hidden = True
            Exit Sub
    Else
        Columns("D:D").Select
    Selection.EntireColumn.Hidden = False
    End If
        If Range("A1").Value = 1 Then
        Columns("F:F").Select
    Selection.EntireColumn.Hidden = True
            Exit Sub
    Else
        Columns("F:F").Select
    Selection.EntireColumn.Hidden = False
    End If
End Sub

Hier wordt kolom D wel verborgen, maar de F nog niet.

Dus het vervolg wil niet lukken, ook al eens geprobeerd met Cases maar daar zit ik ook vast.

Iemand die me wat verder op weg kan helpen?

Link naar reactie
Delen op andere sites

 

"Exit sub" betekent : verlaat de procedure.

Je verlaat de procedure dus al na het verbergen van de eerste kolom.

Je moet de "exit sub" pas zetten nadat je de laatste kolom verborgen hebt en niet in de "If".

In feite hoef je zelfs geen "exit sub" te gebruiken want na de laatste "if" stopt de procedure automatisch.

 

Link naar reactie
Delen op andere sites

Je kan zelfs alles in 1 if structuur zetten.

 

 If Range("A1").Value = 1 Then
    Columns("D:D").Select
    Selection.EntireColumn.Hidden = True
    Columns("F:F").Select
    Selection.EntireColumn.Hidden = True
    Columns("H:H").Select
    Selection.EntireColumn.Hidden = True
    Columns("M:M").Select
    Selection.EntireColumn.Hidden = True
    Columns("O:O").Select
    Selection.EntireColumn.Hidden = True
    Columns("Q:Q").Select
    Selection.EntireColumn.Hidden = True     
 Else
    Columns("D:D").Select
    Selection.EntireColumn.Hidden = False
    Columns("F:F").Select
    Selection.EntireColumn.Hidden = False
    Columns("H:H").Select
    Selection.EntireColumn.Hidden = False
    Columns("M:M").Select
    Selection.EntireColumn.Hidden = False
    Columns("O:O").Select
    Selection.EntireColumn.Hidden = False
    Columns("Q:Q").Select
    Selection.EntireColumn.Hidden = False
 End If

 

Het selecteren en verbergen (of weer zichtbaar maken) van de rijen kan je ook hierin onderbrengen.

Link naar reactie
Delen op andere sites

Select is zelden nodig in VBA.

Dit zou voldoende moeten zijn:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Range("A1").Value = 1 Then
        Range("2:11").EntireRow.Hidden = True
        Range("D1, F1,H1, M1, O1, Q1").EntireColumn.Hidden = True
    Else
        Range("2:11").EntireRow.Hidden = False
        Range("D1, F1,H1, M1, O1, Q1").EntireColumn.Hidden = False
    End If
End Sub

 

Link naar reactie
Delen op andere sites

11 uren geleden, djutoch zei:

Select is zelden nodig in VBA.

Dit zou voldoende moeten zijn:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Range("A1").Value = 1 Then
        Range("2:11").EntireRow.Hidden = True
        Range("D1, F1,H1, M1, O1, Q1").EntireColumn.Hidden = True
    Else
        Range("2:11").EntireRow.Hidden = False
        Range("D1, F1,H1, M1, O1, Q1").EntireColumn.Hidden = False
    End If
End Sub

 

Deze doet het gewoon perfect! Merci!

Link naar reactie
Delen op andere sites

Gast
Dit topic is nu gesloten voor nieuwe reacties.
×
×
  • Nieuwe aanmaken...

Belangrijke informatie

We hebben cookies geplaatst op je toestel om deze website voor jou beter te kunnen maken. Je kunt de cookie instellingen aanpassen, anders gaan we er van uit dat het goed is om verder te gaan.