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

Verbergen 2 rijen bij voldoen aan 1 van de 2 waarden

Status
Niet open voor verdere reacties.

mike564

Gebruiker
Lid geworden
11 dec 2015
Berichten
83
Goedemiddag!

Ik ben betreffende dit onderwerp al een aantal dingen tegengekomen, maar geen daarvan bereikt (naar mijn weten) mijn doel.
Ik wil dat wanneer er aan 1 van de 2 voorwaarden wordt voldaan, namelijk dat wanneer in kolom "B" de waarde "FA" of "A"
staat, de betreffende rij, samen met de rij daarboven door middel van een knop worden verborgen.
De rijen die in het voorbeeld geel zijn gemaakt zullen dus moeten worden verborgen. Daarnaast zou ik ook graag een knop
willen die deze rijen weer zichtbaar maakt.
Graag hoor ik wat er mogelijk is.

MVG,
Mike
 

Bijlagen

Test deze eens:

Code:
Sub cobbe()
For rij = Range("A" & Rows.Count).End(xlUp).Row To 4 Step -1
 If Cells(rij, 2) = "FA" Or Cells(rij - 1, 2) = "A" Then
   Rows(rij).EntireRow.Hidden = True
    Rows(rij - 1).EntireRow.Hidden = True
 End If
Next
End Sub
 
Bedankt voor de snelle reactie!

Grotendeels werkt de code, alleen bij "A" verbergt de rij erboven niet.
ik zou de code ook graag zelf willen leren begrijpen,
bijvoorbeeld: hoe pak ik het aan wanneer ik niet de rij eronder maar de rij erboven wil verbergen,
of wat zou ik moeten doen wil ik er nog een voorwaarde bij voegen, zoals "0" (dus 3 voorwaarden "A", "FA" en "0").
 
Probeer het zo eens

Code:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
With CommandButton1
    Select Case .Caption
        Case "Zichtbaar maken"
            For Each cl In Columns(2).SpecialCells(2)
                If cl = "A" Or cl = "FA" Then cl.Offset(-1).Resize(2, 1).EntireRow.Hidden = False
            Next cl
            .Caption = "Verbergen"
        Case "Verbergen"
        For Each cl In Columns(2).SpecialCells(2)
            If cl = "A" Or cl = "FA" Then cl.Offset(-1).Resize(2, 1).EntireRow.Hidden = True
        Next cl
            .Caption = "Zichtbaar maken"
   End Select
End With
End Sub
 

Bijlagen

Ja, hij werkt zo perfect!
Heb net ook geprobeerd een voorwaarde er aan toe te voegen en dat werkt ook gewoon goed.
Ik heb nog 1 vraag: Stel ik wil bijvoorbeeld dat wanneer ik de 3e voorwaarde ("0") in een andere kolom wil zetten,
(bijvoorbeeld naast de kolom status, een kolom bedrag) hoe pak ik dat dan aan ?

Alvast heel erg bedankt!
 
Door gebruik te maken van offset.

cl.offset(x,y) gaat x rijen naar beneden en y kolommen naar rechts.
 
Als ik het goed begrijp geldt het gedeelte "For Each cl In Columns(2).SpecialCells(2)" dan toch alleen voor de cellen in kolom B.
Ik heb het nu als volgt gedaan maar ik begrijp nu nog steeds niet helemaal hoe ik cl = "0" voor kolom C in plaats kolom B moet laten gelden.
Ik heb een aantal dingen geprobeerd maar hij geeft steeds een foutmelding. (ik ben een mega rookie als het gaat om VBA)

Code:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
With CommandButton1
    Select Case .Caption
        Case "Zichtbaar maken"
            For Each cl In Columns(2).SpecialCells(2)
                If cl = "A" Or cl = "FA" Or cl = "0" Then cl.Offset(-1).Resize(2, 1).EntireRow.Hidden = False
            Next cl
            .Caption = "Verbergen"
        Case "Verbergen"
        For Each cl In Columns(2).SpecialCells(2)
            If cl = "A" Or cl = "FA" Or cl = "0" Then cl.Offset(-1).Resize(2, 1).EntireRow.Hidden = True
        Next cl
            .Caption = "Zichtbaar maken"
   End Select
End With
End Sub

Gebruik ik de onderstaande dan werkt het wel, maar hij doet niks uit op "0" in kolom C

Code:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
With CommandButton1
    Select Case .Caption
        Case "Zichtbaar maken"
            For Each cl In Columns(2).SpecialCells(2)
                If cl = "A" Or cl = "FA" Then cl.Offset(-1).Resize(2, 1).EntireRow.Hidden = False
                If cl = "0" Then cl.Offset(-1, 1).Resize(2, 1).EntireRow.Hidden = False
            Next cl
            .Caption = "Verbergen"
        Case "Verbergen"
        For Each cl In Columns(2).SpecialCells(2)
            If cl = "A" Or cl = "FA" Then cl.Offset(-1).Resize(2, 1).EntireRow.Hidden = True
            If cl = "0" Then cl.Offset(-1, 1).Resize(2, 1).EntireRow.Hidden = True
        Next cl
            .Caption = "Zichtbaar maken"
   End Select
End With
End Sub
 
Zo misschien:

Code:
Or cl = "FA" Or cl.Offset(0,1) = "0" Then
 
Ik loop nu toch nog tegen een probleem aan.
Ik ben het nu aan het testen op het bestand waar ik de macro voor wil gebruiken.
Nu wil ik eigenlijk 2 knoppen: 1 waarmee ik de rijen kan laten verbergen wanneer er in kolom B een 0 staat,
en 1 waarmee ik de voorwaarden in kolom F kan filteren
Nu lukt dat 2e perfect, alleen krijg ik de andere knop niet werkend. (wanneer ik het onder 1 knop doe dan lukt het wel, maar dan duurt het redelijk lang voordat alles is verborgen door de vele nullen in het echte bestand).
Ik gok dat ik het verkeerd heb opgesteld maar dat de macro wel correct is.
Graag zou ik willen weten wat ik nu precies fout doe. (dit is mijn eerste ervaring met VBA)

Nogmaals bedankt, ik leer hier ontzettend veel van en scheelt denk ik een hoop wanneer ik binnenkort mijn cursus begin
 

Bijlagen

Je moet de knop wel een naam geven "verbergen" of "zichtbaar maken". Anders wordt de code nooit uitgevoerd.
 
nog één laatste vraag, wanneer "0" de uitkomst is van een formule, hoe moet ik dat dan verwerken in de macro aangezien de macro nu alleen werkt wanneer het hard ingetypt is
 
Met cl.value krijg ik het niet voor elkaar, hij reageert dan nog steeds alleen op tekst
 
Even de specialcells nog aanpassen.

Code:
For Each cl In Columns(2).SpecialCells(-4123)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan