VBA voor het leegmaken van bepaalde cellen

Status
Niet open voor verdere reacties.

joh88

Gebruiker
Lid geworden
11 feb 2022
Berichten
22
Goedemorgen,

ik ben sinds een paar weken een bestand aan het maken waarin we diverse gegevens kunnen terug zien.
nu wisselt het bestand regelmatig met gegevens. en zou ik graag een knop hebben waarin ik kan aangeven dat er cellen in een bepaalde rij leeggemaakt moeten worden met behoud van opmaak en formules.
het lukt om een simpele VBA te schrijven waarin ik cellen leegmaak. Maar ik zou graag willen aangeven dat bijv piet vertrekt en dan alle gegevens die in de rij van piet staan verwijderd worden. met uitzondering van de grijze vlakken.
als Henk weggaat dat die leeggemaakt kan worden.

en ook de gegevens die dan op het tabblad ernaast staan dat daar het emailadres weggaat.

ik zal een voorbeeld bestand erbij doen. ik hoop dat het een beetje duidelijk is wat ik bedoel.

de gegevens zijn uiteraard fictief.

ik hoop dat iemand mij hierbij kan helpen!:)

groetjes
 

Bijlagen

Deze achter je betreffende werkblad. Met een dubbelklik in kolom B krijg je de vraag om de cellen leeg te maken.

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 If Target.Column = 2 Then
   If MsgBox("Deze regel leegmaken", vbYesNo, "Let op") = vbYes Then
     Union(Target.Resize(, 7), Target.Offset(, 9).Resize(, 4), Target.Offset(, 14).Resize(, 4)).ClearContents
     Cancel = True
   End If
 End If
End Sub
 
Goedemiddag JV,

bedankt voor je snelle bericht, op het tabblad van mail adres blijven de gegevens wel staan.
hij werkt verder wel goed. ik ben alleen bang dat het dubbel klikken miss niet heel handig is.
zou er een inputbox kunnen komen waarin je de naam selecteert en dan die regel leeg maakt?

ik heb zelf geprobeerd zo een inputbox aan te maken maar ik krijg het uitvouw scherm niet gekoppeld aan de namen.

groetjes
 
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 2 And Target = "" Then
       Application.EnableEvents = False
       Range("B1:H1,K1:N1,P1:S1").Offset(Target.Row - 1).ClearContents
       Blad3.Cells(Target.Row + 1, 3) = ""
    End If
    Application.EnableEvents = True
End Sub

deze code werkt als je in kolom B in een cel de naam verwijdert met delete.

In werkblad Blad3

- werk nooit met samengevoegde cellen
- gebruik altijd maar 1 rij voor kolomnamen
 
Laatst bewerkt:
Goedemorgen,

als ik de naam uit rij B verwijder met delete gebeurt er verder niks.


- werk nooit met samengevoegde cellen
- gebruik altijd maar 1 rij voor kolomnamen


is dat voor het makkelijker schrijven van de code?

groetjes
 
VBA en samengevoegde cellen gaan niet samen
 
Waar heb je de gesuggereerde code geplaatst ?
Zet een onderbrekingspunt aan het begin van de code.
Is application.enableevents ingeschakeld ?
De code wordt uitgevoerd als je de cel met de verwijderde naam verlaten hebt.
 
Laatst bewerkt:
Waar heb je de gesuggereerde code geplaatst ?
ik heb hem geplaats bij object Workbook, procedure Worksheet Change
als ik application.enableevents op true zet veranderd er niets.
Zet een onderbrekingspunt aan het begin van de code.
waar precies zet ik die punt dan?
 
De code moet natuurlijk in de macromodule van het werkblad met de gegevens.
 
Goedemorgen allemaal,

de code werkt goed. voor het eerste en 2de blad.

heb hem zelf iets aangepast zodat er nog een bevestigingsvraag in staat.
er is nog een tabblad bijgevoegd en hier staan dan ook gegevens in om te verwijderen.
nu heb ik zelf geprobeerd om het bereik aan te passen in de formule, maar dan doet die hele macro het niet meer.

kunnen jullie uitleggen hoe ik dat goed in de code moet neerzetten?

zoals onderstaan in ieder geval niet...

Code:
Private Sub Worksheet_Change(ByVal Target As Range)     If Target.Column = 2 And Target = "" Then
       Application.EnableEvents = False
       If MsgBox("Gaat persoon met PP of ontslag?(hiermee worden de gegevens verwijderd)", vb, "Let op") = vbOK Then
       Range("B1:I1, K1:N1, P1:S1").Offset(Target.Row - 1).ClearContents
       Blad3.Cells(Target.Row - 1, 3) = ""
    Blad4.Cells(Target.Row - 1, 3) = ""
    Cancel = True
    End If
    Application.EnableEvents = True
End If
End Sub
 
Verwijder de lege rij 1 in werkblad 'Gegevensblad'
Werkblad "Arbeid' bevat nog steeds samengevoegde cellen (lees svp de suggesties goed en doe er iets mee).
Code in werkblad gegevenstabel:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Column = 2 And Target = "" Then
    If MsgBox("Gaat persoon met PP of ontslag?(hiermee worden de gegevens verwijderd)", vb, "Let op") = vbOK Then
      Application.EnableEvents = False
      Intersect(Target.Row, Range("B1:I1, K1:N1, P1:S1")).ClearContents
      Blad3.Cells(Target.Row - 1, 3) = ""
    End If
  End If
  Application.EnableEvents = True
End Sub
 
klopt, helaas is het een bestaand bestand waar ik niet alles bij kan aanpassen. anders had ik er enkele cellen van gemaakt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan