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

Rij verbergen op basis van inhoud

Status
Niet open voor verdere reacties.

stefano

Gebruiker
Lid geworden
22 mei 2004
Berichten
865
In kolom A van een werkblad heb ik ofwel 1 -1 ofwel een lege cel.
Ik wil de rijen verbergen met de waarde -1 (in een variabel werkblad met gegevens) telkens er een waarde ingebracht wordt.
Hiervoor gebruik ik onderstaand maar de reactietijd van excel is heel lang:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cell As Range
With Sheets("Blad1")
    For Each cell In .Range("A1:A1000")
        If UCase(cell.Value) = "-1" Then cell.EntireRow.Hidden = True
    Next
End With
End Sub

Weet iemand raad om dit te versnellen?

dank,

Stefano
 
Bestaat er een hoofdletter voor '-1'?

Het autofilter lijkt mij een beter alternatief.
 
En zonder autofilter zou ik het zo doen:
Code:
For i = 1 To 1000
    If Cells(i, 1) = -1 Then Rows(i).Hidden = True
Next i
 
Als het verbergen op een ander tabje moet gebeuren dan kan je beter een ander Event gebruiken. In de module van het betreffende tabje

Code:
Private Sub Worksheet_Activate()
  Cells(1).CurrentRegion.AutoFilter 1, "-1"
End Sub

Maar zoals ongetwijfeld niet onbekend is een voorbeeldbestand vaak beter om even te kijken hoe je het geheel hebt opgezet.
 
Waarom loop je steeds door alle cellen? zijn ze onderling afhankelijk met formules? indien niet en je voert een waarde in

dan werkt deze code prima zodra je -1 invoert wordt de rij verborgen

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:A1000")) Is Nothing Then
    If Target = -1 Then Target.EntireRow.Hidden = True
End If
End Sub
 
@VenA, volgens mij moet je net omgekeerd te werk gaan.
Code:
Private Sub Worksheet_Activate()
  Cells(1).CurrentRegion.AutoFilter 1, "[COLOR="#FF0000"]<>[/COLOR]-1"
End Sub
 
Nog een duit:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   If target.column=1 then Target.EntireRow.Hidden = target=-1
End Sub
 
Als het verbergen op een ander tabje moet gebeuren dan kan je beter een ander Event gebruiken. In de module van het betreffende tabje

Code:
Private Sub Worksheet_Activate()
  Cells(1).CurrentRegion.AutoFilter 1, "-1"
End Sub

Maar zoals ongetwijfeld niet onbekend is een voorbeeldbestand vaak beter om even te kijken hoe je het geheel hebt opgezet.

Klopt, geen voorbeeldbestand opgeladen :( vergeten .... Nu wel eentje ;)
 
Een waar heb je die dan gelaten?
 
Je kan gewoon het voorbeeld van VenA gebruiken.
Wel even de -1 wijzigen in 1.
Blijft de vraag waarom je dat bij iedere wijziging van welke cel dan ook wilt doen.
 
Ik scroll via het nummer in cel Q2 van nummer 1 tot 100.

De inhoud in rijen 8 tot 12, 16tot 35 en 39 tot het einde veranderen telkens mbv de functie filter().

Als ik de lege rijen verberg dan is het overzicht minder gespreid, duidelijker zichtbaar in één of twee schermen.
 
In bijlage het aangepaste voorbeeld. Heb wel wat gevoelige info verwijderd.
 

Bijlagen

Wat werkt er dan niet met het autofilter? Werkbladen met verborgen formules vind ik niet zo'n goed idee om hier te plaatsen.
 
Laatst bewerkt:
Autofilter past zich niet aan wanneer je via de button van 1 naar 99 navigeert. Of kan je dat toch instellen dat ie telkens opnieuw een refresh van de data doet?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan