Tælle x'er (ved hændelse)

I et regneark findes der navne i kolonne A. I kolonne B sættes et 'x', når en bestemt betingelse er opfyldt. I kolonne C skal der nu skrives et tal som fortæller, hvilket nummer 'x', der er tale om. Ud for det første 'x' skal der skrives 1, ud for det næste 2 og så fremdeles indtil der er krydser ud for alle navne. Formålet med tallene er at kunne se, i hvilken rækkefølge de enkelte er krydset af. Denne kode på arkets kodemodul, løser opgaven.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("b1:B100")) Is Nothing Then
        Set Rng = Range("c1:c100")
        On Error Goto Out
        If Target.Value = "x" Then
            If IsEmpty(Target.Offset(0, -1)) Then
                MsgBox "Der kan kun krydses af ud for navne", vbOKCancel + vbCritical
                Exit Sub
            End If
            Target.Offset(0, 1).Value = Application.WorksheetFunction.Max(Rng) + 1
        End If
    End If
Out:
    If Err.Number = 13 Then Exit Sub
End Sub

Koden opererer med op til 100 rækker i B og C kolonnerne, men dette kan nemt udvides. Sættes der 'x'2 i en række, hvor A-kolonnen er tom, vises en fejlmeddelelse, og krydses sættes ikke.

NB! Den oprindelige kode til denne makro fejlede, hvis man prøvede at slette x'erne igen, og slettede mere end et ad gangen. Dette er løst i denne udgave ved hjælp af fejlkoden. Nu stoppes afspilnngen af koden, såfremt, der opstår den fejlkode, som netop foremkommer, hvis man prøver at slette mere end et x ad gangen.

- Tilbage til makroer -
- Tilbage til Excel -