Onderwerp


Cellen beveiligen na invoer



Informatie


In sommige gevallen kan het wenselijk zijn dat ingevoerde gegevens meteen worden beveiligd. Je kunt dit oplossen door in VBA een procedure te schrijven die gebruik maakt van het Worksheet_Change Event.
 
De essentie van een
Worksheet_Change Event is dat een wijziging in één of een aantal cellen van het werkblad een procedure (Event) start.
De syntax is als volgt.
Private Sub Worksheet_Change(ByVal Target As Range)
code ....
End Sub

!! Target is de verwijzing naar de cellen die worden gewijzigd.

 
Voorbeeld.
 
De volgende procedure maakt duidelijk hoe het
Worksheet_Change Event werkt.
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rngData As Range
    Set rngData = Intersect(Range("C10:C34"), Target)

    If Not rngData Is Nothing Then
        Worksheets("Data").Unprotect Password:="Welkom"
        rngData.Locked = True
        Worksheets("Data").Protect Password:="Welkom"
    End If
End Sub

 

Hoe het werkt.
De procedure gaat er van uit dat het werkblad beveiligd is en dat alle cellen waarin gegevens mogen worden ingevoerd
(C10:C34), niet vergrendeld zijn
De procedure controleert of er in één van de cellen uit bereik C10:C34 iets is ingevoerd
Als er in één van de cellen uit bereik C10:C34 iets is ingevoerd
(If Not rngData Is Nothing),
wordt de beveiliging van het werkblad Data opgeheven
(Worksheets("Data").Unprotect)
wordt de cel waarvan de inhoud werd gewijzigd vergrendeld
(rngData.Locked = True)
wordt de beveiliging van het werkblad Data hersteld
(Worksheets("Data").Protect)