Clever-Excel-Forum

Normale Version: VBA code an Excel 2007 anpassen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Liebes Forum,

folgenden Code habe ich mit einiger Hilfe so hinbekommen, dass er in excel 2010 und 2013 genau das tut was er soll.

Leider klappt es in 2007 noch nicht so ganz. Ich verstehe aber nicht warum. Kann mir jemand einen Stoss in die richtige Richtung geben?

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Z As Long
    If Target.Count = 1 Then
        If Not Intersect(Range("I11:I1000"), Target) Is Nothing Then
            ActiveSheet.Unprotect "heute"
            Application.EnableEvents = False
            Target.Offset(0, 1).Value = VBA.Date
            Application.EnableEvents = True
            ActiveSheet.Protect "heute"
        Else
            If Not Intersect(Target, Range("W11:W1000")) Is Nothing Then
                ActiveSheet.Unprotect "heute"
                Application.EnableEvents = False
                Target.Offset(0, 1) = Target.Offset(0, 1) + 1
                ActiveSheet.Protect "heute"
                If Intersect(Target, Range("W11:W1000")) Is Nothing Then Exit Sub
                ActiveSheet.Unprotect "heute"
                With Sheets("CustomerVisits")
                    Z = .Range("G1")
                    .Range("G1") = .Range("G1") + 1
                    .Range("A" & Z) = Target.Value
                    .Range("B" & Z) = Target.Offset(0, -18).Value
                    .Range("C" & Z) = Target.Offset(0, -20).Value
                End With
                Application.EnableEvents = True
                ActiveSheet.Protect "heute"
            End If
        End If
    End If
End Sub

Vielen Dank und liebe Gruesse,

Christoph
Hallo Christoph,

wo hängt es denn genau?

Normalerweise sollte der Code laufen.
Ich vermute, es hängt bei Date. Dort könnte es hängen, wenn z.B. irgendwelche Verweise definiert sind, die keiner braucht oder die z.B. versionsbedingt nicht verfügbar sind. Es wäre u.a. in dem Zusammenhang auf jeden Fall auch von Vorteil, wenn Du die Datei in der niedrigsten Version erstellst.

Es gibt eventuell 3 Stellen, wo man was anders machen könnte.

1. bei Protect / Unprotect noch Password:= dazu schreiben
2. bei den Ranges noch .Value dazu schreiben
3. Statt VBA.Date nur Date schrieben