Lege cellen verwijderen en overig cellen naar links verplaatsen

Status
Niet open voor verdere reacties.

Frankvanb

Nieuwe gebruiker
Lid geworden
14 aug 2019
Berichten
3
Ik heb in VBA een macro geschreven om in tabel datum_regels de data voor bepaalde maand+jaar te verwijderen met Clearcontents:

Sub verwijder_datum()
Dim cl As Range, j As Integer, m As Integer
j = InputBox("welk jaar (4 cijfers) ?")
m = InputBox("Welke maand (1-12) ?")
With Sheets("datum_regels")
Set myrange = .Range("D1:H7")
For Each cl In myrange
If Year(cl.Value) = j And Month(cl.Value) = m Then
cl.ClearContents
End If
Next cl
End With
End Sub

Het resultaat is te zien in de bijlage. Nu wil ik deze zodanig uitbreiden dat de lege cellen (rood gearceerd) verwijdert worden en de overige cellen naar links worden verplaatst.

Het veranderen van cl.clearcontents in cl.delete werkt niet, want dan wordt de hele kolom verwijdert.
 

Bijlagen

  • Schermafbeelding 2019-08-14 om 17.04.05.png
    Schermafbeelding 2019-08-14 om 17.04.05.png
    74,4 KB · Weergaven: 51
Met een plaatje kunnen we weinig.
Plaats een voorbeeld Excel document.
 
Cellen verwijderen doe je van onder naar boven.
Plaats je document zonder gevoelige info.
 
het complete bestand

Beste Edmoor & HSV,

Allereerst dank voor de snelle reacties :)

Ik heb het excelbestand bijgevoegd. Het gaat om werkblad invoerscherm verlof.

Aanvullend heb ik nog 2 vragen waar ik zelf niet uitkom:
1) Als je bij het invoerscherm (bij jaar en bij maand) op cancel klikt, dan loopt hij vast. Zouden jullie daar iets op weten?
2) Op het werkblad dagoverzicht wil ik nog een functionaliteit maken in vba: een knop toevoegen die voor het op te geven personeelsnummer (cel G6) de waarde: datum van die dag (D5) toevoegt aan tabel12 op werkblad invoerscherm verlof. Deze waarde moet op de regel van het personeelsnummer worden toegevoegd op de eerste lege kolom na de laatste ingevulde kolom.

Gezien ik alleen basis kennis heb van VBA hoop ik dat jullie mij op weg kunnen helpen ;)

Dank alvast.

Mvg

Frank
 

Bijlagen

  • ontwerpvl-1.xlsm
    781,1 KB · Weergaven: 27
Geef een voorbeeld van wat je invoert en op welk blad die code dan moet worden uitgevoerd.
Vertel er ook bij elke actie die code triggert.
 
Laatst bewerkt:
Uitleg

Omschrijving van de 2 vragen.

1) Het betreft hier een Macro op het blad "Invoerscherm Verlof" welke wordt aangeroepen via de knop "Data verwijderen" op het zelfde blad. Deze functionaliteit moet elke cel met datum in jaar j & maand m geleegd (deze variabelen worden via invoerscherm ingevoerd). Vervolgens moeten de daardoor ontstane lege cellen worden verwijdert.
Vb: bij het aanroepen van deze macro via knop met j=2018 en m=12 zouden D7 en E6 (blad "Invoerscherm verlof") moeten worden verwijderd. Vervolgens moeten cel F6 verplaatst worden naar D6, E7-G7 naar D7-F7, F8 naar D8 en dat op die manier voor alle 305 rijen van tabel12.

2) Mijn tweede vraag moet worden uitgevoerd op blad Dagoverzicht. Een macro die wordt getriggered door knop toevoegen. We halen dag 1-10-19 op door deze datum in te voeren op D5. Via formules worden gegevens opgehaald van brontabel (op verborgen tabblad brontabel). De waarden op de brontabel zijn gelinkt aan de waarden op tabel12 (van blad Invoerscherm verlof).
Vb: als ik een extra verlofdag wil toevoegen op datum=1/10/19 voor personeelsnummer 100000 (=G6 "Dagoverzicht"). Bij het aanroepen van de macro via knop toevoegen ("Dagoverzicht") moet eerst gezocht worden naar personeelsnummer 100000 in kolom "A:A" van tabel12 ("Invoerscherm verlof"). Waarde 31/10/19 moet in dit voorbeeld worden toegevoegd aan cel G6, dwz zoek rij r (voor personeelsnummer 100000) en vervolgens zoek de eerste lege kolom k voor rij r en voeg waarde D5(blad"dagoverzicht") toe aan deze cel.

Ik hoop dat ik het zo duidelijk heb kunnen uitleggen.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan