Registrer tidspunkt for ændringer

I en projektmappe findes i Ark1, kolonne I (I2:I100) en række datavalideringsrullelister, hver med de samme tre muligheder, Kontakt, Møde, Salg. Hver gang der foretages et nyt valg i en sådan rulleliste, ønskes den nye værdi skrevet i Ark2, sammen med dato og tidspunkt for registreringen. Her følger to forskellige måder at løse denne opgave på.

Begge er baseret på, at der i Ark2, findes tre kolonner, hver forsynet med overskrifter, fx Kontakt, Møde, Salg. I den første løsning skrives alle ændringer i I-kolonnen ind fortløbende i Ark2, startende i rækken lige under overskriften og i den kolonne, der passer til den nye værdi i rullelisten.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("I2:I100")) Is Nothing Then
        Select Case Target.Value
            Case Is = "Kontakt"
                Sheets(2).Range("A65536").End(xlUp).Offset(1, 0).Value = Now()
            Case Is = "Møde"
                Sheets(2).Range("B65536").End(xlUp).Offset(1, 0).Value = Now()
            Case Is = "Salg"
                Sheets(2).Range("C65536").End(xlUp).Offset(1, 0).Value = Now()
            Case Else
                Exit Sub
            End Select
        End If
End Sub

Da der er tale om en hændelseskode, skal denne placeres i kodemodulet, til det ark, hvor ændringerne sker - her Ark1. Dette er også tilfældet i den anden variant. Her skrives ændringerne imidlertid ikke fortløbende, men i samme række i Ark2, som ændringen i Ark1 er foretaget i.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("I2:I30")) Is Nothing Then
    rk = Target.Row
        Select Case Target.Value
            Case Is = "Kontakt"
                Sheets(2).Range("A" & rk).Value = Now()
            Case Is = "Møde"
                Sheets(2).Range("B" & rk).Value = Now()
            Case Is = "Salg"
                Sheets(2).Range("C" & rk).Value = Now()
            Case Else
                Exit Sub
            End Select
        End If
End Sub

- Tilbage til makroer -
- Tilbage til Excel -