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

VBA rijen verbergen a.d.h.v Twee data

Status
Niet open voor verdere reacties.

lievedonne

Gebruiker
Lid geworden
1 feb 2010
Berichten
60
Beste,

Zit erg te zoeken op het internet, maar kom er nog niet goed uit: wil rijen d.m.v. VBA verbergen als de datum in kolom A niet tussen twee nader in te vullen data ligt. Sta open voor suggesties, maar nog meer voor goede ideeën!

Groet
Bekijk bijlage test.xlsx
(zie bijlage)
 
Deze code is opgenomen met de macrorecorder.

Deze code kan vast mooier en korter.

Code:
Sub Filter_opbasisvan_cel_C2_en_D2()

    Range("B3").Select
    ActiveCell.FormulaR1C1 = "hulpkolom"
    
    Range("B4").Select
    ActiveCell.FormulaR1C1 = "=IF(AND(RC[-1]>=R2C3,RC[-1]<=R2C4),""ja"",""nee"")"
    Range("B4").Select
    Selection.Copy
    Range("B5:B64").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    ActiveWindow.SmallScroll Down:=-9
    ActiveSheet.Range("$A$3:$D$64").AutoFilter Field:=1
    ActiveSheet.Range("$A$3:$D$64").AutoFilter Field:=2, Criteria1:="ja"
    ActiveWindow.SmallScroll Down:=-12
    Range("A1").Select
End Sub

Run de macro iedere keer nadat je een nieuw criteria hebt ingevoerd.

Heb je hier vragen of opmerkingen over, laat het gewoon even weten.

M.b.t. code kan ik je waarschijnlijk onvoldoende helpen.

Dat laat ik graag aan VBA-kenners over.
 

Bijlagen

Beste Oeldere,

Ik ga d'r eens even op broeden om te zien wat daar nu allemaal in de macro staat. Het is uiteindelijk wel de bedoeling dat een en ander in VBA komt te staan en 'real time' gaat reageren op het moment dat je in een bepaalde kolom iets invoegt (laatste)
Dus als er nog mensen zijn die goede ideeën/suggesties weten in welke richting ik de oplossing moet zoeken, hou ik mij aanbevolen!
 
Beste,

Ik zie dat er ook een forum bestaat voor VBA. Is het voor een van de giga seniors mogelijk om mijn vraag daar naar toe verplaatsen?

Alvast bedankt!
 
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cl As Range, Rng As Range
If Target.Address = "$D$4" Then
Set Rng = Range("A5:A" & Cells(Rows.Count, 1).End(xlUp).Row)
 Rng.EntireRow.Hidden = False
  For Each cl In Rng
   If WorksheetFunction.And(cl >= Range("C4"), cl <= Range("D4")) Then
     cl.EntireRow.Hidden = True
    End If
   Next
 End If
End Sub
 

Bijlagen

Laatst bewerkt:
Beste HSV,

Indrukwekkend staaltje VBA en ik ben hier ontzettend mee geholpen. door het afkijken van de VBA codering leer ik aardig wat. Deze code doe echter precies het omgekeerde van wat ik beoog: de data tussen de twee ingevoerde data moet zichtbaar zijn en de overige moeten verborgen worden.
het eenvoudige wat dingen omdraaien in de code blijkt niet te werken, want dat functioneert het niet meer.
Zou je mij een tip willen geven waar ik de verandering moet doorvoeren wil het gewenste resultaat bereiken?
 
Hoi Wieter,

Tja, laat ik dat nu al geprobeerd hebben,want die lag voor de hand, alleen werkt dat maar eenmalig: daarna komen de overige rijen niet meer terug. En de volgende datum die in wordt gevuld, zorgt ervoor dat ook de rijen verdwijnen waar de data ingevuld worden. En die moeten wel weer te zien zijn op het moment dat er geen datum in in d4 is ingevuld. Ik lees graag nog welke andere mogelijkheden er zijn.
 
Die vraag verwachtte ik al.
Ik heb de code van Harry nog wat uitgebreid. (Waarschijnlijk gaat Harry eens goed lachen met m'n code, maar ze werkt)
Als je D4 leeg maakt komt alles terug.

Bekijk bijlage 154589
 
Ha Wieter,

Kijk, dat ga ik even op mijn gemak bestuderen zodat ik het kan reproduceren. Tot die tijd zal ik de vraag op beantwoord zetten. Maar niet zonder mijn dank uit te spreken aan de VBA-experts HSV en Wieter!
 
Twee dingetjes veranderen.
De eerste is mijn fout.
De ander door het omgekeerde (Not).
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cl As Range, Rng As Range
If Target.Address = "$D$4" Then
Set Rng = Range("A5:A" & [COLOR="#FF0000"]Cells.SpecialCells(11).Row)[/COLOR] 
Rng.EntireRow.Hidden = False
  For Each cl In Rng
   If [COLOR="#FF0000"]Not[/COLOR] WorksheetFunction.And(cl >= Range("C4"), cl <= Range("D4")) Then
     cl.EntireRow.Hidden = True
    End If
   Next
 End If
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan