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

Automatisch verbergen lege cellen

Status
Niet open voor verdere reacties.

User21

Gebruiker
Lid geworden
19 mrt 2009
Berichten
24
Dag,

wederom een vraag vanuit mijn zijde, deze is wat gecompliceerder. De bijlage moet meer duidelijkheid scheppen. Het hele gebeuren is veel gecompliceerder, maar ik heb het even met een eenvoudig model nagebootst.

Op blad 1 is een totaaloverzicht gemaakt, blad 2 dient als invoer. Het idee erachter is dat wanneer ik op blad 2 een nieuw product invoer, dat deze automatisch weergegeven wordt op blad 1. Op zich geen probleem, maar nu komt het volgende:
Op blad 1 moeten op de cellen waar geen waardes staan verdwijnen. Dit heb ik momenteel gerealiseerd door in Kolom D een autofilter neer te zetten en vervolgens de 'niet lege cellen' optie gekozen. Het werkt en de lege cellen (en rijen) verdwijnen. Maar wanneer ik nu een nieuw product toevoeg in Blad 2, zal er dus in Blad 1 automatisch één rij bij moeten komen. Dit is niet het geval.

Momenteel is dit nog enkel realiseerbaar door wederom op het dropdown menu van Kolom D te drukken en wederom de 'niet lege cellen' optie aan de klikken.

Weet iemand hoe je dit proces/systeem automatisch kan maken?

Ik zie hier een uitdaging :D

EDIT: Hmm, uploaden is verkeerd gegaan, bestand is 5 Mb.. Ik ga er even aan werken..
EDIT2: Bijlage erbij!
 

Bijlagen

Laatst bewerkt:
Veel duidelijker is het niet want geen bijlage

Mvg

Rudi
 
Met deze in Blad2 zou dat kunnen:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Sheets("Blad2").Range("G17:H27")) Is Nothing Then Exit Sub
Sheets("Blad1").Range("B2").AutoFilter Field:=1, Criteria1:="<>"
End Sub

Cobbe
 
Hey,
Ziet er goed uit. ;)
Maar waar moet ik deze plaatsen in blad 2?
 
bekeken

Ik heb jouw bestandje bekeken en ik zou er een knopje op zetten. Onder dat knopje hangt de volgende macro:

Code:
Sub filteren()
    Selection.AutoFilter Field:=1, Criteria1:="<>"
End Sub

:thumb:
 
Okee prima. Probleem is dat ik nog nooit een macro (?) heb geschreven of ingevoerd. Staat dat hier ergens op het forum beschreven hoe dat moet? :thumb:
 
Niet moeilijk

Je hoeft de macro niet meer te maken, dat heb ik al gedaan. Je moet hem wel nog plakken in de VBA-editor. Daar kom je in door in je document te klikken op Alt-F11.
Kies daarna voor Invoegen - Module.
Daarna klik je bij Project-VAB Project, dubbel op Module1 (misschien moet je eerst even iets uitklappen. en daar plak je de code die ik heb geschreven.
Dan ga je terug naar je document. Daar maak je een knop. Om dat te doen moet eerst de werkbalk Formulieren aanstaan. Ik neem aan dat je weet hoe je dat moet doen. Klik op het icoontje van de knop en zet de knop op je werkblad. Dan zal vanzelf worden gevraagd welke macro je er aan wilt hangen. Er staat er maar eentje dus die moet je hebben. Klik op OK en dat moet het zijn.
Nog verdere vragen, schroom niet en stel ze.

:thumb:
 
Nog wat verder helpen

In bijgaand bestand tref je jouw bestand met knopje aan. Ik vind overigens wel dat je het zelf ook even moet proberen anders wordt het te gemakkelijk.


:thumb:
 
Laatst bewerkt:
Yes, knop is toegevoegd! Moet ik deze knop echter toevoegen op blad 1 of blad 2? :o

Daarna is mijn vraag geheel beantwoord (denk ik :cool:).
 
Ik zou opteren voor de macro van Cobbe, dan gebeurt alles automatisch >> zonder nog op een knop te moeten drukken.
Voor het plaatsen >> Rechtsklik op tab van Blad2 >> Programmacode weergeven >>Macro plakken >> Klaar

Mvg

Rudi
 
Klopt, die is ook goed!

Allebei toepasbaar. Ik ga inderdaad die van Cobbe gebruiken, maar DCWDPT komt ook goed van pas! :thumb:

Toppers!
 
Met deze in Blad2 zou dat kunnen:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Sheets("Blad2").Range("G17:H27")) Is Nothing Then Exit Sub
Sheets("Blad1").Range("B2").AutoFilter Field:=1, Criteria1:="<>"
End Sub

Cobbe
Ik heb deze toegepast in mijn voorbeeldsheet en deze werkte. Nu wil ik deze echter toepassen in mijn werkelijke sheet en gaat er ergens iets fout.

Het verschil in de sheets zit hem in het feit dat bij het origineel 'Blad 2' vervangen is door een externe excelsheet. Daardoor heb ik de code aangepast naar:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Sheets("[149266.1.xls]Blad1").Range("A3:C19")) Is Nothing Then Exit Sub
Sheets("Blad2").Range("B1").AutoFilter Field:=1, Criteria1:="<>"
End Sub

Nu doet hij het niet meer. Weten jullie waar het probleem zit, of moet ik dan beide sheet online gooien (probleem, want zijn samen 10Mb...).
 
Laatst bewerkt:
De voorwaarde in een Worksheet_Change is enkel van toepassing op het blad waar de code in staat. Je zal de code in het externe blad moeten plaatsen en van daaruit voor het autofilter verwijzen naar het originele blad. Je zal dus maw moeten werken vanuit het externe sheet.

Mvg

Rudi
 
Okee, omgedraaid, code staat nu in de hoofdsheet. Code toegevoegd aan werkblad 1 (Blad1):

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Sheets("Blad1").Range("A3:B19")) Is Nothing Then Exit Sub
Sheets("[149271.xls]Blad1").Range("B2").AutoFilter Field:=1, Criteria1:="<>"
End Sub

Nothing happened. In de gekoppelde sheet (149271.xls) veranderen de waardes nog wel, dus dat klopt nog steeds. Maar het is dus niet meer zo dat hij automatisch ook de lege cellen verbergt...
 
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim wb As Workbook
If Intersect(Target, Range("A3:B19")) Is Nothing Then Exit Sub
Set wb = Workbooks("149271.xls")
With wb.Sheets("Blad1")
    .Range("B2").AutoFilter Field:=1, Criteria1:="<>"
End With
End Sub

Mvg

Rudi
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan