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

Macro voor verbergen rijen onder voorwaarde

  • Onderwerp starter Onderwerp starter bgcc
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

bgcc

Gebruiker
Lid geworden
20 nov 2008
Berichten
16
Beste mensen,

Ik ben bezig met het maken van een uitgebreid overzicht in excel. Nou probeer ik met behulp van 4 checkboxen (type: form control) steeds maar een beperkt aantal rijen weer te geven.

Omdat het overzicht nog steeds bijgewerkt moet kunnen worden is het te onhandig om elke checkbox aan vaste rijen te koppelen. Ik wil daarom een extra kolom (A) gebruiken waarin de waarden 1 t/m 4 staan. Checkbox 1 moet, wanneer aangevinkt, alleen de rijen met het getal 1 weergeven, Checkbox 2 de rijen met getal 2 enz.

Het lukt me wel om de checkbox een bepaalde rij te laten weergeven en verbergen, alleen de IF functie die nodig is voor het selecteren van de juiste rien met een bepaalde waarde krijg ik maar niet goed ingevoerd.

Iemand enig idee hoe dit als macro in te voeren is?

Alvast hartelijk bedankt!
 
Wat dacht je van autofilter ?

Dat is inderdaad een snelle manier om het voor elkaar te krijgen. Ik doe het echter liever met checkboxen omdat dit voor anderen ook makkelijker te gebruiken is en ik deze ook gebruik om bepaalde kolommen al dan niet weer te geven...
 
De methode autofilter kun je ook in VBA aanroepen en dus koppelen aan een vinkvak.
 
Bedankt voor uw tips!

Ik heb wat verder gezocht op internet over hoe die koppeling tussen macro en filter gemaakt moet worden. Het lukt me echter niet het invoervel van de checkbox te koppelen aan het velden van de filter. Dit zou echter ideaal zijn.

Ik gebruik nu de volgende macro voor een formulier:

Sub Form1()

Set cb = Excel.ActiveSheet.CheckBoxes(Application.Caller)
If cb.Value = xlOn Then
Range("A1:A500").AutoFilter Field:=1, Criteria1:="1"
End If
End Sub


Hiermee laat ik dus alle rijen zien met in de eerste kolom de waarde 1. Wanneer ik echter een 2e checkbox maak, maar dan met de voorwaarde 2, kan ik deze niet combineren met de eerste voorwaarde... Ook het uitzetten van de checkbox heeft met bovenstaande macro nog geen effect.

Sorry voor de vele uitleg die ik vraag... Ik heb echter tot vandaag nog nooit met macro's gewerkt en ben al de hele dag bezig om dit (voor mijn gevoel vrij eenvoudige probleem) opgelost te krijgen.
 
Oké.
Een simpel voorbeeld.
In bijgevoegd bestand zit een autofilter van 2 kolommen.
Daarnaast zijn 2 checkboxen.

1 voor getal 1 (die zou je kunnen laten verwijzen naar een cel als je dat wilt)
1 voor tekst a (die zou je kunnen laten verwijzen naar een cel als je dat wilt)

Als je aanvinkt dan wordt de filter toegepast en bij het uitvinken wordt de sortering automatisch ongedaan gemaakt.

Met vriendelijke groet,


Roncancio
 

Bijlagen

Oké.
Een simpel voorbeeld.
In bijgevoegd bestand zit een autofilter van 2 kolommen.
Daarnaast zijn 2 checkboxen.

1 voor getal 1 (die zou je kunnen laten verwijzen naar een cel als je dat wilt)
1 voor tekst a (die zou je kunnen laten verwijzen naar een cel als je dat wilt)

Als je aanvinkt dan wordt de filter toegepast en bij het uitvinken wordt de sortering automatisch ongedaan gemaakt.

Met vriendelijke groet,


Roncancio


Heel erg bedankt voor het voorbeeld! Ik ga proberen deze om te zetten naar mijn bestand!

Groeten Barry
 
Oké.
Een simpel voorbeeld.
In bijgevoegd bestand zit een autofilter van 2 kolommen.
Daarnaast zijn 2 checkboxen.

1 voor getal 1 (die zou je kunnen laten verwijzen naar een cel als je dat wilt)
1 voor tekst a (die zou je kunnen laten verwijzen naar een cel als je dat wilt)

Als je aanvinkt dan wordt de filter toegepast en bij het uitvinken wordt de sortering automatisch ongedaan gemaakt.

Met vriendelijke groet,

Roncancio

Beste Roncancio,

Ik heb uw bestand geprobeerd te gebruiken, en ik snap hem helemaal. Enige wat mij hiermee niet lukt is het combineren van 2 filterwaarden. Stel ik wil uit kolom A alle regels met de waarde 1 weergeven EN uit kolom B alle waarden a.

Nu kan ik namelijk alleen maar een combinatie uitvoeren die aan beide voorwaarden voldoet.
 
Beste Roncancio,

Ik heb uw bestand geprobeerd te gebruiken, en ik snap hem helemaal. Enige wat mij hiermee niet lukt is het combineren van 2 filterwaarden. Stel ik wil uit kolom A alle regels met de waarde 1 weergeven EN uit kolom B alle waarden a.

Nu kan ik namelijk alleen maar een combinatie uitvoeren die aan beide voorwaarden voldoet.

Dat lijkt mij logisch dat alleen de waardes worden getoond als aan beide voorwaarden worden gedaan.
Of mis ik iets?:confused::o

Met vriendelijke groet,


Roncancio
 
Dat lijkt mij logisch dat alleen de waardes worden getoond als aan beide voorwaarden worden gedaan.
Of mis ik iets?:confused::o

Met vriendelijke groet,


Roncancio

Ik denk dat de vernieuwde filterfunctie in office 2007 bij mij wat verwarring heeft veroorzaakt. In plaats van dat je hierbij maar 1 mogelijkheid kan kiezen, kun je achter elke waarde een vinkje zetten.

Ik dacht dat dit met de koppeling van de checkbox aan de filterfunctie ook zou kunnen. Dus dat je zou kunnen zeggen:
Aan een filter van kolom A, met in de kolom een aantal keer de waarden 1, 2, 3 en 4, wilde ik dus per waarde een checkbox koppelen. Hiermee leek het me mogelijk dat wanneer ik de checkboxen 2 en 3 aanvink, ik dus rijen zou zien met waarden 2 en 3 in kolom A. Hierbij dacht ik een soort van AND combinatie te kunnen maken tussen alle 4 de checkboxen.

Het lukt me echter niet in Virtual Basic in 1 SUB functie, 2 checkbox waarden aan te roepen te combineren.

Ik hoop dat hier echter toch een oplossing voor is.

Alvast bedankt!
 
Ik denk dat de vernieuwde filterfunctie in office 2007 bij mij wat verwarring heeft veroorzaakt. In plaats van dat je hierbij maar 1 mogelijkheid kan kiezen, kun je achter elke waarde een vinkje zetten.

Ik dacht dat dit met de koppeling van de checkbox aan de filterfunctie ook zou kunnen. Dus dat je zou kunnen zeggen:
Aan een filter van kolom A, met in de kolom een aantal keer de waarden 1, 2, 3 en 4, wilde ik dus per waarde een checkbox koppelen. Hiermee leek het me mogelijk dat wanneer ik de checkboxen 2 en 3 aanvink, ik dus rijen zou zien met waarden 2 en 3 in kolom A. Hierbij dacht ik een soort van AND combinatie te kunnen maken tussen alle 4 de checkboxen.

Het lukt me echter niet in Virtual Basic in 1 SUB functie, 2 checkbox waarden aan te roepen te combineren.

Ik hoop dat hier echter toch een oplossing voor is.

Alvast bedankt!

Ik heb zelf geen 2007, maar het kan nooit kwaad als je een voorbeeldbestandje stuurt, om te kunnen zien hoe je het voor ogen hebt.

Met vriendelijke groet,


Roncancio
 
Ik heb hier een voorbeeldje bijgevoegd. Ik heb tot nog toe 2 methoden gebruikt om de rijen naar wens te verbergen, maar loop bij beide tegen een probleem op:

Bij de methode met de For loop van tab 1: als ik alle rijen verberg, en vervolgens weer tevoorschijn wil laten komen lukt dit niet met de bijbehorende checkboxen. Ik heb hiervoor een extra box: SHOW ALL toegevoegd, waarmee ik dit probleem op los. Dit zou toch ook zonder extra checkbox moeten kunnen?

En bij de manier met de filters, hier kan ik alleen de rijen tonen die aan een combinatie van voorwaarde voldoet. Als ik bijvoorbeeld de blauwe en rode rijen wil laten zien, kan dit niet...

Ik hoop dat het voorbeeld het probleem wat duidelijker maakt...

Bedankt alvast!

M.v.g.
 

Bijlagen

Als je ieder vinkvak aan de overeenkomstige code koppelt gaat het goed met:

Code:
Sub kleur(c0)
  For Each cl In Cells(9, 2).Resize(Cells(Rows.Count, 1).End(xlUp).Row - 9)
    If cl.Interior.Color = c0 Then cl.EntireRow.Hidden = Not cl.EntireRow.Hidden
  Next
End Sub

Sub vinkgeel()
  kleur vbYellow
End Sub

Sub vinkblauw()
  kleur vbBlue
End Sub

Sub vinkrood()
  kleur vbRed
End Sub

Sub vinkwit()
  kleur vbWhite
End Sub

NB de lichtblauwe kleur in jouw bestand komt niet overeen met vbBlue.
Wijzig dus eerst de kleur van B11:C11 en B15:C15
 
Super, hij werkt inderdaad prima zo. Ik heb uw versie aangepast zodat hij weer op getallen zoekt i.p.v. kleuren. In het werkelijke bestand wat ik gebruik gaat het namelijk niet om de kleurtjes.
Heb ik nog 1 vraag bij uw macro:
De versie die ik gemaakt had kon binnen 1 sec. 400 rijen verbergen. Wanneer ik uw methode gebruik doet hij er aanzienlijk langer over (seconde of 5 bij verbergen van 300 rijen).
Heeft u enig idee of het makkelijk is hier nog wat aan te verbeteren?

M.v.g.
 
Het gaat al sneller met

Code:
Sub kleur(c0)
  For Each cl In columns(1).specialcells(xlcelltypeconstants)
    If cl.value = c0 and cl.row >8 Then cl.EntireRow.Hidden = Not cl.EntireRow.Hidden
  Next
End Sub
en nog rapper met
Code:
Sub tst(c0)
  columns(1).autofilter 1,"<>"& c0  (gokje)
End sub
 
De eerste werkt even snel, ofja, ik zie het verschil in elk geval niet.
De 2e werkt wel sneller, alleen klopt er iets niet me deze. Als een checkbox uit vink, en vervolgens weer aan, gaat deze niet terug aan. Dit gebeurd pas wanneer ik de volgende checkbox aanvink. Beetje vaag wat er precies gebeurd, maar met deze klopt het in elk geval niet meer.

Ik heb nu gewoon een iets langzamere sheet, maar dat is eigenlijk geen probleem.

Bedankt in elk geval voor uw hulp!

Groeten
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan