Skriv dato i korrekt måned

I A2 indtastes skiftende datoer. Disse datoer skal overføres  en relevant månedskolonne afhængig af, hviilken dato, der er tastet.. Februar er i B-kolonnen, Marts i C-kolonnen og så fremdeles. Der kan aldrig indtastes mere end en dato i hver måned, og der indtastes ikke nødvendigvis datoer i alle måneder.

Koden er en hændelsesprocedure, og skal placeres i kodemodulet for det ark, den skal anvendes i.

Private Sub Worksheet_Change(ByVal Target As Range)

Dim maaned as byte
' Undersøg om der er tastet i A2 og undersøg dernæst om det tastede er en dato.
' I modsat fald vises en fejlmeddelelse og makroen forlades. A2 aktiveres igen.
' Er der tastet en dato i et korrekt format, tages månedsværdien af denne.
' Månedsværdien tildeles til variablen maaned.

    If Not Intersect(Target, Range("A2")) Is Nothing Then
        If IsDate(TargetValue) = False Then
            MsgBox "Der skal indtastes en dato i korrekt format: ""dd-mm-åå""", vbCritical + vbOKOnly
            Range("a2").Activate
            Exit Sub
        End If
        maaned = Month(Target.Value)
    Else
        Exit Sub
    End If

' Nu undersøges månedsværdien, og i overensstemmelse med denne foretages en relevant
' forskydning i forhold til A2, hvorefter det tastede overføres til den relevante kolonne.
' Celle A2 aktiveres til ny indtastning.


    Select Case maaned
        Case Is = 1
            Target.Offset(0, 1).Value = Target.Value
        Case Is = 2
            Target.Offset(0, 2).Value = Target.Value
        Case Is = 3
            Target.Offset(0, 3).Value = Target.Value
        Case Is = 4
            Target.Offset(0, 4).Value = Target.Value
        Case Is = 5
            Target.Offset(0, 5).Value = Target.Value
        Case Is = 6
            Target.Offset(0, 6).Value = Target.Value
        Case Is = 7
            Target.Offset(0, 7).Value = Target.Value
        Case Is = 8
            Target.Offset(0, 8).Value = Target.Value
        Case Is = 9
            Target.Offset(0, 9).Value = Target.Value
        Case Is = 10
            Target.Offset(0, 10).Value = Target.Value
        Case Is = 11
            Target.Offset(0, 11).Value = Target.Value
        Case Is = 12
            Target.Offset(0, 12).Value = Target.Value
    End Select

    Range("a2").Activate

End Sub

NB! De mange anførselstegn omkring "dd-mm-åå" er nødvendige for at få VBA til at skrive anførselstegnene som en del af tekststrengen.

- Tilbage til makroer -
- Tilbage til Excel -