Visual Basic tip: Een datum- of tijdstempel invoeren


 

Als je werkt met grote hoeveelheden gegevens, is het soms wenselijk om bij het invoeren of wijzigen van gegevens een datum- of tijdstempel te plaatsen. Er zijn meerdere manieren om dit te kunnen doen. De meest voor de hand liggende manier is om via Ctrl+Shift+; de huidige tijd in te voeren. Daar is niks mis mee, maar het kost een extra handeling en het gebeurt niet automatisch. Een tweede manier is om via de functie =VANDAAG() de huidige tijd op te nemen. Als er nooit meer iets wijzigt aan het werkblad is dat prima, maar in alle andere gevallen wordt deze functie bijgewerkt als er iets in het werkblad wijzigt. Ook deze optie valt dus af.

 

Wat overblijft is het schrijven van een VBA procedure die wordt uitgevoerd nadat gegevens in een bereik worden ingevoerd of gewijzigd.


 

Klik met de rechtermuisknop op de tab van het werkblad waar de gegevens worden ingevoerd of worden bewerkt. Klik op Programmacode weergeven, kopieer de volgende procedure en plaats deze in een module van de VBA Editor.

Private Sub Worksheet_Change(ByVal rngTarget As Excel.Range)

    Dim rngCell As Range

    Dim rngChange As Range

 

    On Error GoTo ErrHandler

    Set rngChange = Intersect(rngTarget, Range("A:A"))

 

    If Not rngChange Is Nothing Then

        Application.EnableEvents = False

        For Each rngCell In rngChange

            If rngCell > "" Then

                With rngCell.Offset(0, 1)

                    .Value = Now

                    .NumberFormat = "HH:MM:SS"

                End With

            Else

                rngCell.Offset(0, 1).Clear

            End If

        Next

    End If

 

ExitHandler:

    Set rngCell = Nothing

    Set rngChange = Nothing

    Application.EnableEvents = True

    Exit Sub

 

ErrHandler:

    MsgBox Err.Description

    Resume ExitHandler

End Sub


 

Hoe het werkt.

 

Elke keer dat een cel in een rij van kolom A wordt bewerkt, wordt in dezelfde rij, maar nu van kolom B, een tijdstempel opgenomen door de waarde NOW op te maken in het formaat HH:MM:SS. Als je alleen de dag moet tonen, dan wordt de opmaak DD/MM/YYYY. Indien je zowel de datum, als de tijd moeten tonen, dan wordt de opmaak DD/MM/YYYY - HH:MM:SS.