Kolom of rij verbergen (die geselecteerd ziin) op basis van een waarde van een cel

Status
Niet open voor verdere reacties.

Edwin82

Gebruiker
Lid geworden
2 aug 2013
Berichten
16
Hallo,

Ik zou graag een soort ontwikkel modus willen maken in Excel zodat ik niet steeds cellen moet verbergen en omgekeerd.

Ik zou in één cel een "x" willen zetten zodat de ontwikkel modus gedeactiveerd.

Verder heb ik rij 1 gereserveerd om een "1" in elke kolom te zetten die verborgen moet worden.
Dit heb ik ook gedaan in kolom "A" om de rij te selecteren die verborgen moet worden.

Als dus in die ene cel de "x" wordt gezet wordt kolom A en rij 1 sowieso verborgen en de rijen en kolom die geselecteerd zijn in Kolom A en Rij 1

Ik heb hier al een stukje werkende code

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   Columns(5).Hidden = Range("B18").Value = "x"
   Rows(1).Hidden = Range("B18").Value = "x"
End Sub

Dit werkt maar ik heb geen idee hoe ik de index van een kolom of rij moet gebruiken als deze "1" is. Waarschijnlijk een FOR functie, maar weet niet hoe ik dit moet uit schrijven

Kan iemand mijn helpen?

Groeten,
Edwin
 
Probeer dit:
Code:
Rows(Target.Row).Hidden = Range("B18").Value = "x"

Voor meer dan 1 geselecteerde regel:
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Columns(5).Hidden = Range("B18").Value = "x"
    If Target.Count > 1 Then
        Rows(Split(Target.Address(0, 0), ":")(0) & ":" & Split(Target.Address(0, 0), ":")(1)).Hidden = Range("B18").Value = "x"
    Else
        Rows(Target.Row).Hidden = Range("B18").Value = "x"
    End If
End Sub
 
Laatst bewerkt:
Hallo,

Ik heb nog wat gevonden en verder uitgewerkt

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim c As Range

    For Each c In Rows("1:1").Cells
        If c.Value = "X" Then
              c.EntireColumn.Hidden = Range("B18").Value = "x"
        End If
    Next c

Dim r As Range
    For Each r In Columns("A:A").Cells
    If r.Value = "X" Then
        r.EntireRow.Hidden = Range("B18").Value = "x"
    End If
    Next r

End Sub


Maar hierdoor wordt de excel erg traag en komt er steeds zo'n draaiend blauw rondje.

Kan ik dit anders opschrijf dat het niet zo traag wordt?

Groeten,
Edwin
 
Laatst bewerkt:
Kijk nog eens naar #2.
 
Hallo,

Bedankt voor je reactie. Ik had niet niet gezien voordat ik de 2e posten.

Ik ben niet een ster in VBA, maar het lijk of deze code alleen naar de rijen kijkt en niet naar de kolommen of er een 1 in staat. Klopt dit, want dan snap ik de code denk ik een beetje?

Groeten,
Edwin
 
Dat klopt. Maar je kan dezelfde techniek ook voor kolommen gebruiken.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan