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

Rijen verbergen met een macro

Status
Niet open voor verdere reacties.

CRUZ2

Gebruiker
Lid geworden
4 jul 2008
Berichten
41
Beste helpmij toppers,

Ik probeer d.m.v. een macro een aantal rijen te verbergen d.m.v. een keuze
Als in cel D71 of D72 of E71 of E72 een X staat dan moeten de rijen 336 t/m 380 verbergen
Als in cel D71 of D72 of E71 of E72 niks staat dan moeten de rijen 336 t/m 380 zichtbaar zijn

Ik heb de volgende VBA al gebruikt maar krijg de of functie er niet in.

Wie helpt mij thnx

Code:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    Application.ScreenUpdating = False
    Dim c As Range
    Dim d As Range
    Dim e As Range
    Dim f As Range
    
    For Each c In [D71]
        If c = "X" Then
        Rows("336:380").EntireRow.Hidden = True
    End If
    Next
    Application.ScreenUpdating = True
        For Each c In [D71]
        If c = "" Then
        Rows("336:380").EntireRow.Hidden = False
    End If
    Next
     For Each d In [D72]
        If d = "X" Then
        Rows("336:380").EntireRow.Hidden = True
    End If
    Next
    Application.ScreenUpdating = True
        For Each d In [D72]
        If d = "" Then
        Rows("336:380").EntireRow.Hidden = False
    End If
    Next
        For Each e In [E71]
        If e = "X" Then
        Rows("336:380").EntireRow.Hidden = True
    End If
    Next
    Application.ScreenUpdating = True
        For Each e In [E71]
        If e = "" Then
        Rows("336:380").EntireRow.Hidden = False
    End If
    Next
        For Each f In [E72]
        If f = "X" Then
        Rows("336:380").EntireRow.Hidden = True
    End If
    Next
    Application.ScreenUpdating = True
        For Each f In [E72]
        If f = "" Then
        Rows("336:380").EntireRow.Hidden = False
    End If
    Next
    End Sub

Alvast bedankt !!!!
 
Iéts korter:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("D71:E72")) Is Nothing Then
    Rows("336:380").Hidden = UCase(Target.Value) = "X"
End If
End Sub

Met vriendelijke groet,


Roncancio
 
Oeps

Harstikke bedankt voor de code alleen moest het omgedraaid zijn dus:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("D71:E72")) Is "X" Then
    Rows("336:380").Hidden = UCase(Target.Value) = Nothing
End If
End Sub

Hoe krijg ik dit goed?
Maar in ieder geval bedankt
 
Harstikke bedankt voor de code alleen moest het omgedraaid zijn dus:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("D71:E72")) Is "X" Then
    Rows("336:380").Hidden = UCase(Target.Value) = Nothing
End If
End Sub

Hoe krijg ik dit goed?
Maar in ieder geval bedankt

Waarom zou het ongezet moeten worden?
Zodra een X of x in de 1 van de cellen D71 t/m E72 wordt geplaatst dan wordt de rijen 336 t/m 380 verborgen.

Met vriendelijke groet,


Roncancio
 
Juist als er niks in staat moet moeten deze rijen verborgen met een X zichtbaar
 
Juist als er niks in staat moet moeten deze rijen verborgen met een X zichtbaar

Dat is omgekeerd van wat je in #1 vertelde.;)
Hoe dan ook, met NOT wordt het omgedraaid.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("D70:E71")) Is Nothing Then
    Rows("336:380").Hidden = [B]Not[/B] (UCase(Target.Value) = "X")
End If
End Sub

Met vriendelijke groet,


Roncancio
 
Bedankt toppie!!
Alleen ververst hij niet ??
Heb het anders opgelost

Beetje omslachtig maar het werkt

in cl J71 of functie die de waarde X als er in [D71:E72] een X staat bepaalt en daar achter een macro geplaats als volgt

Code:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    Application.ScreenUpdating = False
    Dim c As Range
    
    For Each c In [J71]
        If c = "" Then
        Rows("336:380").EntireRow.Hidden = True
    End If
    Next
    Application.ScreenUpdating = True
        For Each c In [J71]
        If c = "X" Then
        Rows("336:380").EntireRow.Hidden = False
    End If
    Next
    End Sub

Dit werkt thank you
 
Bedankt toppie!!
Alleen ververst hij niet ??
Heb het anders opgelost

Beetje omslachtig maar het werkt

in cl J71 of functie die de waarde X als er in [D71:E72] een X staat bepaalt en daar achter een macro geplaats als volgt

Code:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    Application.ScreenUpdating = False
    Dim c As Range
    
    For Each c In [J71]
        If c = "" Then
        Rows("336:380").EntireRow.Hidden = True
    End If
    Next
    Application.ScreenUpdating = True
        For Each c In [J71]
        If c = "X" Then
        Rows("336:380").EntireRow.Hidden = False
    End If
    Next
    End Sub

Dit werkt thank you

???
Volgens mij heb je mijn code op de verkeerde plaats gezet.
Overigens kan je code nog wat korter.

Code:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    Rows("336:380").Hidden = Not ([j71]) = "X"
End Sub

Met vriendelijke groet,


Roncancio
Mijn code is voor een werkblad.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan