Änderungen von Zellen protokollieren



Excel-Version: 9.0 (Office 2000)
nach unten

Betrifft: Änderungen von Zellen protokollieren
von: Hajo
Geschrieben am: 01.07.2002 - 10:46:53

Hallo liebe Excel-Gemeinde,

mit dem nachfolgenden Makro (aus Herbers Excel-Archiv abgeleitet) protokolliere ich Änderungen von Zellen mit. Das funktioniert auch recht gut, geht aber schief, sobald ich mehrere Zellen gleichzeitig lösche oder kopiere. Target.value ist dann ein Array und mit varValue nicht verträglich. Hat jemand eine Lösung, die auch das Ändern mehrerer Zellen gleichzeitig mitprotokolliert?

Danke für jeden Hinweis.
Hajo


Public varValue As Variant
Public strAddress As String

Private Sub Worksheet_Change(ByVal Target As Range)
Dim intRow As Integer
Dim intDate As Long
If Target.Value <> varValue Then
With Worksheets("Protokoll")
intRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Cells(intRow, 1).Value = Target.Row
.Cells(intRow, 2).Value = Target.Column
.Cells(intRow, 3).Value = Target.Value
varValue = CStr(Target.Value)
End With
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
varValue = ActiveCell.Value
strAddress = ActiveCell.Address
End Sub



nach oben   nach unten

Teillösung
von: Martin Beck
Geschrieben am: 01.07.2002 - 11:58:51

Hallo Hajo,


Public varValue As Variant
Public strAddress As String

Private Sub Worksheet_Change(ByVal Target As Range)
Dim As Range
Dim intRow As Integer
Dim intDate As Long
For Each c In Target
    If c.Value <> varValue Then
        With Worksheets("Protokoll")
            intRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
            .Cells(intRow, 1).Value = c.Row
            .Cells(intRow, 2).Value = c.Column
            .Cells(intRow, 3).Value = c.Value
            varValue = CStr(c.Value)
        End With
    End If
Next
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
varValue = ActiveCell.Value
strAddress = ActiveCell.Address
End Sub

scheint zu funktionieren. Ausnahme: Wenn man mehrere Zellen löscht, wird nur die erste protokolliert.

Gruß
Martin Beck

nach oben   nach unten

Danke, das hilft etwas weiter !
von: Hajo
Geschrieben am: 01.07.2002 - 12:35:41

Hierdurch wird auch die bisherige Fehlermeldung und der Abbruch beseitigt.


nach oben   nach unten

Rest der Lösung (hoffentlich)
von: Martin Beck
Geschrieben am: 01.07.2002 - 13:26:44

Hallo Hajo,

versuche mal statt

If c.Value <> varValue Then


If c.Value <> varValue Or IsEmpty(c) Then

Ich habe nur wenig getestet, aber bei mir hat es funktioniert.

Gruß
Martin Beck


nach oben   nach unten

Ein Dankeschön
von: Hajo_SB
Geschrieben am: 01.07.2002 - 15:52:37

Hallo Martin,

ich bin erst später wieder dazu gekommen. Deine Lösung scheint einwandfrei zu funktionieren. Besten Dank.

Gruß Hajo


 nach oben

Beiträge aus den Excel-Beispielen zum Thema "Änderungen von Zellen protokollieren"