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

Actie na worksheet_change

Status
Niet open voor verdere reacties.

JanBG

Verenigingslid
Lid geworden
30 aug 2017
Berichten
971
Hallo,

Ik heb een bestand waarin de standaard aanwezigheid van medewerkers per week wordt weergegeven. In het tabblad invoer kunnen medewerkers aangeven dat ze bij voorbeeld op vakantie zijn; dit komt dan automatisch in het bezettingsoverzicht. Nu wil ik dat als het jaar in het tabblad bezetting wordt veranderd, de inhoud van de invoer in het tabblad Invoer wordt verwijderd.

Ik heb deze code, maar die werkt niet:

Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Application.EnableEvents = False

    If (Target.Address = "$J$2") Then
        Sheets("Invoer").Select
        Range("D9:I374").Select
        Selection.ClearContents
    End If
        
    Application.EnableEvents = True
End Sub

Bekijk bijlage Aanwezigheid .xlsm

Iemand een suggestie?

groet, Jan
 
Ja:

Code:
    If Target.Address = "$J$2" Then Range("D9:I374").ClearContents
 
Sjon,

Dank voor de snelle reactie, het werkt alleen niet....:evil:
 
excuus, sheet niet vermeld

Code:
If Target.Address = "$J$2" Then Sheets("Invoer").Range("D9:I374").ClearContents
 
Laatst bewerkt:
Je moet eerst je Events weer op True zetten.

Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
  If Target.Address = "$J$2" Then Sheets("Invoer").Range("D9:I374").ClearContents
End Sub
 
Sjon,

Dank maar het werkt nog steeds niet.

@VenA: Events staan op True
 
Wat hebben we aan een opmerking als 'het werkt nog steeds niet'?
 
Jan, onder welk blad zet je deze code? Ik hoop in het blad Bezetting.
 
Dit werkt bij mij prima achter het blad Bezetting:
Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If (Target.Address = "$J$2") Then Sheets("Invoer").Range("D9:I374").ClearContents
End Sub

Edit:
Zie net dat VenA dat ook al had geplaatst.
 
Laatst bewerkt:
Tja, ik dacht dat het duidelijk was: namelijk de code doet nog steeds niet wat ie zou moeten doen en als ik begreep waaraan dat lag, zou ik er geen vraag over hebben gesteld
 
In je voorbeeld document werkt het prima.
 
Edmoor, Sjon,

Code staat onder blad bezetting, maar als ik een ander jaar kies in J2 (Blad bezetting) blijft inhoud van blad invoer gewoon staan
 
Ik geloof het graag edmoor, maar ik heb die code in het voorbeeldbestand dat ik gepost heb gezet en dan werkt de code niet
 
Post dan eens wat je nu hebt gedaan, wellicht dat we daaruit kunnen opmaken waar het mis gaat.

Heb je het nog steeds tussen Enable_events false en true staan trouwens?
 
Laatst bewerkt:
Draai eerst deze code en probeer het dan nog eens.

Code:
Sub VenA()
  Application.EnableEvents = True
End Sub
 
@VenA,

Dank, nu werkt de code wel. En ik maar denken dat Enable_Events op True stond:o
 
Niet denken maar testen/controleren.:p:d

Code:
msgbox Application.EnableEvents
of in het venster immediate in de VB-Editor: ?Application.EnableEvents
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan