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

bij voorwaarde rij verbergen

Status
Niet open voor verdere reacties.

deschrik

Gebruiker
Lid geworden
2 okt 2007
Berichten
122
Hallo allemaal.

Ik wil graag dat als een rij niet binnen twee datums valt (bijv. 1-okt-2008 en 31-okt-2008), dat dan de gehele rij bij activeren van het werkblad verborgen wordt. Indien de rij wel binnen de twee opgegeven datums valt, moet de rij zichtbaar blijven. Eigenlijk moet er dus worden begonnen met zoeken naar de datum die staat in "A6" van werkblad "1", en dan steeds 1 regeltje lager gaan tot regel 500.

Ik heb een voorbeeldje bijgevoegd in de bijlage om het probleem duidelijker te maken. Het gaat om werkblad ''1".
 

Bijlagen

Met deze code zal dat wel lukken zeker:

Private Sub Worksheet_Activate()
For Each c In Range("A6:A" & Range("a500").End(xlUp).Row + 1)
If c < "01-10-2008" Or c > "31-10-2008 " Then
Rows(c.Row).Hidden = True
End If
Next
End Sub

Succes, Cobbe

PS: de datums kun je in cellen zetten
 
@Cobbe

Aangezien het datums betreft zou ik gebruik maken van DateValue.
Code:
Private Sub Worksheet_Activate()
Dim rCel As Range
    For Each rCel In Range("A6:A" & Range("a500").End(xlUp).Row + 1)
        If rCel.Value < DateValue("01-10-2008") Or rCel.Value > DateValue("31-10-2008") Then
            Rows(rCel.Row).Hidden = True
        End If
    Next
End Sub

Met vriendelijke groet,


Roncancio
 
Laatst bewerkt:
Roncancio ,

Bedankt voor de hint en aanpassing, je hebt natuurlijk gelijk.
Ik ben nog al (eens) slordig in de afwerking.

Groetjes, Cobbe
 
Het is misschien maar een kleinigheid maar als de rij eenmaal is verborgen dan hoeft het niet nog een keer als de conditie van datums geldt.

Code:
Private Sub Worksheet_Activate()
Dim rCel As Range
    For Each rCel In Range("A6:A" & Range("a500").End(xlUp).Row + 1)
        If rCel.Value < DateValue("01-10-2008") Or rCel.Value > DateValue("31-10-2008") Then
            Rows(rCel.Row).Hidden = True
            Exit Sub
        End If
    Next
End Sub
 
Het is misschien maar een kleinigheid maar als de rij eenmaal is verborgen dan hoeft het niet nog een keer als de conditie van datums geldt.

Code:
Private Sub Worksheet_Activate()
Dim rCel As Range
    For Each rCel In Range("A6:A" & Range("a500").End(xlUp).Row + 1)
        If rCel.Value < DateValue("01-10-2008") Or rCel.Value > DateValue("31-10-2008") Then
            Rows(rCel.Row).Hidden = True
            Exit Sub
        End If
    Next
End Sub
Dat begrijp ik niet helemaal. Je controleert toch of de waarde een datum bevat? Zonder DateValue gaat dat mis.
Bovendien kan je zeker geen Exit Sub gebruiken omdat je daarmee het programma afsluit zodra je 1 cel hebt verborgen.

Met vriendelijke groet,


Roncancio
 
Exit For is het dan.

En waarom geen Autofilter? Dat zal beter zijn dan een lus te gebruiken.
 
Exit For is het dan.

En waarom geen Autofilter? Dat zal beter zijn dan een lus te gebruiken.

M.i. ook geen Exit ..For want dan ga je ook uit de For... Next en wie zegt dat de datums bij elkaar staan?

Met vriendelijke groet,


Roncancio
 
Rows(rCel.Row).Hidden = True

Ik ga er vanuit dat dit een hele rij zal verbergen en niet alleen maar één cel.
Dat was ook de eerste vraag van deschrik.
Als dat inderdaad zo is dan kan je wel Exit Sub of Exit For gebruiken.
 
Ik ga er vanuit dat dit een hele rij zal verbergen en niet alleen maar één cel.
Dat was ook de eerste vraag van deschrik.
Als dat inderdaad zo is dan kan je wel Exit Sub of Exit For gebruiken.

Naar mijn mening kan je geen Exit Sub of Exit For gebruiken omdat je dan maar een beperkt deel controleert. Zodra je een rij tegenkomt waarvan de gecontroleerde cel buiten de datumrange valt (bijv vandaag) dan stopt de macro en heeft de lus geen nut.
Zet maar de datum van vandaag in A6 en sleept de cursor naar beneden om de cellen er onder te vullen. Dan zul je zien dat de andere datums niet gecontroleerd laat staan verwijderd worden. Noch bij Exit Sub, noch bij Exit For.

Ik deel wel de mening van Wigi dat een AutoFilter te prefereren is.

Met vriendelijke groet,


Roncancio
 
Naar mijn mening kan je geen Exit Sub of Exit For gebruiken omdat je dan maar een beperkt deel controleert. Zodra je een rij tegenkomt waarvan de gecontroleerde cel buiten de datumrange valt (bijv vandaag) dan stopt de macro en heeft de lus geen nut.
Zet maar de datum van vandaag in A6 en sleept de cursor naar beneden om de cellen er onder te vullen. Dan zul je zien dat de andere datums niet gecontroleerd laat staan verwijderd worden. Noch bij Exit Sub, noch bij Exit For.

Ik deel wel de mening van Wigi dat een AutoFilter te prefereren is.

Met vriendelijke groet,


Roncancio

Hier heb je inderdaad gelijk. De routine stopt inderdaad met het kijken naar de overige rijen. Foutje van mij.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan