Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Änderungen von Zellen protokollieren

Forumthread: Änderungen von Zellen protokollieren

Änderungen von Zellen protokollieren
01.07.2002 10:46:53
Hajo
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



Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Teillösung
01.07.2002 11:58:51
Martin Beck
Hallo Hajo,

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

Gruß
Martin Beck

Danke, das hilft etwas weiter !
01.07.2002 12:35:41
Hajo
Hierdurch wird auch die bisherige Fehlermeldung und der Abbruch beseitigt.


Rest der Lösung (hoffentlich)
01.07.2002 13:26:44
Martin Beck
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

Anzeige
Ein Dankeschön
01.07.2002 15:52:37
Hajo_SB
Hallo Martin,

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

Gruß Hajo

;
Anzeige

Infobox / Tutorial

Änderungen von Zellen protokollieren in Excel


Schritt-für-Schritt-Anleitung

Um Änderungen von Zellen in Excel zu protokollieren, kannst Du ein einfaches VBA-Makro verwenden. Folge diesen Schritten:

  1. Öffne deine Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf "VBAProject (deineDatei.xlsx)" und wähle Einfügen > Modul.
  3. Kopiere und füge den folgenden Code ein:

    Public varValue As Variant
    Public strAddress As String
    
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim intRow As Integer
        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
  4. Erstelle ein neues Arbeitsblatt mit dem Namen "Protokoll", um die Änderungen zu speichern.

  5. Speichere die Datei als Makro-fähige Datei (*.xlsm).


Häufige Fehler und Lösungen

  • Fehler: Nur die erste Zelle wird protokolliert
    Lösung: Ändere die Bedingung in der Worksheet_Change-Subroutine. Ersetze:

    If c.Value <> varValue Then

    mit

    If c.Value <> varValue Or IsEmpty(c) Then
  • Fehler: Abbrüche beim Löschen mehrerer Zellen
    Wenn Du mehrere Zellen gleichzeitig änderst, könnte das Makro Probleme haben. Überprüfe, ob Target.Value als Array behandelt wird. Eine Anpassung des Codes kann hier nötig sein.


Alternative Methoden

Wenn Du keine VBA-Makros verwenden möchtest, kannst Du auch die Funktion "Änderungen nachverfolgen" nutzen:

  1. Gehe zu Überprüfen in der Menüleiste.
  2. Aktiviere die Option Änderungen nachverfolgen.
  3. Änderungen werden dann automatisch protokolliert, jedoch ist diese Methode weniger flexibel als VBA.

Praktische Beispiele

Hier sind einige Beispiele, wie das VBA-Makro in der Praxis verwendet werden kann:

  • Zellenänderungen protokollieren: Wenn Du den Wert einer Zelle änderst, wird die Zeile, die Spalte und der neue Wert in das Protokollblatt eingetragen.
  • Mehrere Zellen gleichzeitig: Mit der oben genannten Anpassung des Codes kannst Du auch Änderungen an mehreren Zellen protokollieren.

Tipps für Profis

  • Erweiterung des Protokolls: Du kannst das Protokoll erweitern, indem Du weitere Informationen wie das Datum oder den Benutzer, der die Änderung vorgenommen hat, hinzufügst.
  • Verwendung von Ereignisprozeduren: Nutze andere Ereignisse wie Worksheet_BeforeDelete oder Worksheet_BeforeDoubleClick, um noch mehr Änderungen zu protokollieren.
  • Optimierung des Codes: Wenn Du häufige Änderungen hast, kann es sinnvoll sein, den Code zu optimieren, um die Performance zu verbessern.

FAQ: Häufige Fragen

1. Wie kann ich das Protokoll in eine andere Datei speichern?
Das Protokoll kannst Du in eine andere Datei speichern, indem Du den Workbook-Objekt in VBA verwendest, um die Daten in eine externe Datei zu schreiben.

2. Funktioniert das Makro in allen Excel-Versionen?
Das VBA-Makro sollte in den meisten modernen Excel-Versionen (Excel 2010 und neuer) funktionieren. Ältere Versionen könnten einige Funktionen nicht unterstützen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige