Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zeile mit Änderungen erkennen, 'X' in Spalte schre

Zeile mit Änderungen erkennen, 'X' in Spalte schre
25.07.2018 21:55:41
Janssen
Hallodele, da ich hier schon oft sehr hochkarätige Hilfe gefunden habe, wende ich mich an euch in der Hoffnung auf Hilfe.
Vor gefühlten 100 Jahren habe ich in FORTRAN programmiert, mit VBA bin ich nicht vertraut. Doch einen Code interpretieren und anpassen sollte ich können...
Ich habe eine Tabelle mit ca. 2'500 Zeilen und rund 100 Spalten.
Ein Auszug aus dieser Tabelle stelle ich Mitarbeitenden zur Verfügung, deren bearbeitete Zellen kann ich erkennen, da alle Änderungen per Makro blau gefärbt werden:
Private Sub Worksheet_Change(ByVal Target As Range)
Target.Font.ColorIndex = xlThemeColorAccent1
End Sub

Dieses geniale Makro habe ich aus einem anderen Forum, welches nicht mehr online ist.
Nun habe ich vom Boss eine neue Forderung erhalten: Alle Änderungen, welche ich an der (Quell-) Tabelle vornehme sollen automatisch erkannt werden und in einer Spalte 'Änderungen' mit einem 'X' bezeichnet werden.
Somit müsste das Makro alle Änderungen auf Zeilenbasis erkennen und ein 'X' in besagte Spalte schreiben. Das kriege ich nicht hin, ich hoffe auf Unterstützung hier :-)
Vielen Dank für jeden Hinweis und liebe Grüsse - Pit
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeile mit Änderungen erkennen, 'X' in Spalte schre
25.07.2018 22:13:34
Daniel
HI
du hast 100 Spalten in jeder Zeile.
willst du jetzt 100 weitere Spalten um für jede Spalte die Änderung anzeigen zu können?
oder reicht eine Spalte um nur die Zeile zu kennzeichnen, in der etwas geändert wurde?
wenn du noch das Original hast, würde ich dieses einfach ein zweites Tabellenblatt einfügen.
dann kannst du die geänderten Zellen einfach über die Bedingte Formatierung anzeigen lassen, mit dieser Formel als Regel: =A1QuellTabelle!A1
Gruß Daniel
Anzeige
AW: Zeile mit Änderungen erkennen, 'X' in Spalte schre
26.07.2018 09:33:59
Pit
Hoi Daniel,
von den ca. 100 Spalten ist eine einzige als Statusspalte vorgesehen, die bei einer Änderung in Zeilen eine Markierung mit 'X' erhalten soll. Damit könnte angezeigt werden, an welchen Zeilen Veränderungen vorgenommen wurden. Somit ist nicht erkenntlich, welche zelle einer Spalte geändert wurde, was aber ausreicht.
Hintergrund: Die Tabelle soll alternativ in eine Datenbank eingelesen werden. Wenn eine Zeile geändert hat, wird die gesamte Zeile neu eingelesen. Somit müssen nicht dauernd alle 2'500 Zeilen neu eingelesen werden.
Ich hoffe, die Problematik so hinreichend beschrieben zu haben :-)
Liebe Grüsse - Pit
Anzeige
Crossposting
26.07.2018 09:45:35
SF
Hola,
hier gibt es auch eine Antwort....
https://ms-office-forum.net/forum/showthread.php?t=353273
Gruß,
steve1da
Zeile mit Änderungen erkennen, 'X' in Spalte schre
26.07.2018 10:16:57
Bernd
Servus Pit,
teste mal:

Dim c As Range
Dim Änderungen As Long
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 1 Then Exit Sub
Set c = Range("A1:" & Cells(1, Columns.Count).End(xlToLeft).Address)
Änderungen = c.Find(what:="Änderungen", LookIn:=xlValues, lookat:=xlWhole).Column
If Target.Column = Änderungen Then Exit Sub
Target.Font.ColorIndex = xlThemeColorAccent1
Cells(Target.Row, Änderungen).Value = "x"
End Sub
Grüße, Bernd
Anzeige
AW: Zeile mit Änderungen erkennen, 'X' in Spalte schre
27.07.2018 09:14:38
Pit
Hallo Bernd,
ich bin begeistert, dein Code funktioniert auf Anhieb! Herzlichen Dank!
Implementation:
Im entsprechenden Arbeitsblatt des VBA- Editors folgenden Code eingefügt:
'********************************************************************
' Änderungen pro Zelle in Blau einfärben, pro Zeile mit 'X' markieren
' Quelle: https://www.herber.de/forum/ - Forummitglied Bernd
'********************************************************************
Dim C As Range
Dim Changes As Long
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 1 Then Exit Sub
Set C = Range("A1:" & Cells(1, Columns.Count).End(xlToLeft).Address)
Changes = C.Find(what:="Redakt.", LookIn:=xlValues, lookat:=xlWhole).Column
If Target.Column = Changes Then Exit Sub
Target.Font.ColorIndex = xlThemeColorAccent1
Cells(Target.Row, Changes).Value = "X"
End Sub
Resultat: Alle Änderungen werden in blauer Schrift dargestellt (wie bisher) und neu in der Spalte 'Redakt.' (für redaktionelle Änderungen) mit einem 'X' markiert. Genau was ich mir vorgestellt habe. Genial!
Abschliessend noch eine Frage: Wenn ich die geänderte / nachgeführte Tabelle abgegeben habe, muss ich für eine neue Version die Blaufärbungen rückgängig machen und die 'X' wieder löschen. Dazu ist das Makro natürlich auszuschalten. Ich kann es jedesmal löschen und dann wieder einfügen. Gibt es auch einen eleganteren Weg?
Nochmals vielen Dank und Liebe Grüsse - Pit
Anzeige
AW: Zeile mit Änderungen erkennen, 'X' in Spalte schre
27.07.2018 16:10:54
Pit
Ich habe, basierend auf Erfahrungen aus alten Programmierertagen, nun mit einer Konstanten einen Schalter eingebaut, mit dem ich das Makro beeinflussen kann. Folgender Code:
'********************************************************************
' Änderungen pro Zelle in Blau einfärben, pro Zeile mit 'X' markieren
' Quelle: https://www.herber.de/forum/ - Forummitglied Bernd
'********************************************************************
Dim C As Range
Dim Changes As Long
Const Mode As Integer = 2 '0 = macro inactive 1 = full macro active 2 = part of macro active
Private Sub Worksheet_Change(ByVal Target As Range)
If Mode = 1 Then
If Target.Row = 1 Then Exit Sub
Set C = Range("A1:" & Cells(1, Columns.Count).End(xlToLeft).Address)
Changes = C.Find(what:="Redakt.", LookIn:=xlValues, lookat:=xlWhole).Column
If Target.Column = Changes Then Exit Sub
Target.Font.ColorIndex = xlThemeColorAccent1
Cells(Target.Row, Changes).Value = "X"
ElseIf Mode = 2 Then
Target.Font.ColorIndex = xlThemeColorAccent1
End If
End Sub
Wenn jemand noch eine elegantere Möglichkeit findet, bin ich daran interessiert. Aber so passt es ganz gut.
Nochmals ganz herzlichen Dank an Bernd (Herber's Forum) und an Santa (MS-Office-Forum)!
Liebe Grüsse - Pit
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Änderungen in Excel-Zeilen erkennen und markieren


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und gehe zu dem Arbeitsblatt, in dem du die Änderungen verfolgen möchtest.
  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Klicke im Projekt-Explorer auf das gewünschte Arbeitsblatt (z.B. „Tabelle1“).
  4. Füge den folgenden VBA-Code in das Codefenster ein:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim c As Range
    Dim Änderungen As Long
    If Target.Row = 1 Then Exit Sub
    Set c = Range("A1:" & Cells(1, Columns.Count).End(xlToLeft).Address)
    Änderungen = c.Find(what:="Änderungen", LookIn:=xlValues, lookat:=xlWhole).Column
    If Target.Column = Änderungen Then Exit Sub
    Target.Font.ColorIndex = xlThemeColorAccent1
    Cells(Target.Row, Änderungen).Value = "X"
End Sub
  1. Schließe den VBA-Editor und teste das Makro, indem du Änderungen in deinem Arbeitsblatt vornimmst.

Häufige Fehler und Lösungen

  • Fehler: Änderungen werden nicht in der Spalte „Änderungen“ angezeigt.

    • Lösung: Überprüfe, ob die Spalte „Änderungen“ korrekt benannt ist. Der Code sucht nach der exakten Bezeichnung.
  • Fehler: Das Makro funktioniert nicht, wenn die erste Zeile geändert wird.

    • Lösung: Der Code ignoriert die erste Zeile. Wenn Änderungen dort erfasst werden sollen, entferne die Zeile If Target.Row = 1 Then Exit Sub.

Alternative Methoden

Wenn du keine VBA-Lösungen verwenden möchtest, kannst du auch die Bedingte Formatierung in Excel nutzen, um geänderte Zellen visuell hervorzuheben:

  1. Wähle den Bereich aus, den du überwachen möchtest.
  2. Gehe zu „Start“ > „Bedingte Formatierung“ > „Neue Regel“.
  3. Wähle „Formel zur Ermittlung der zu formatierenden Zellen verwenden“ und verwende eine Formel wie:
=A1<>QuellTabelle!A1
  1. Setze das Format auf eine blaue Schriftfarbe.

Praktische Beispiele

Angenommen, du hast eine Tabelle mit den Spalten A bis D und die Spalte E soll die Änderungen markieren. Der oben angegebene VBA-Code wird die Änderungen in Spalte E mit einem „X“ kennzeichnen, während alle bearbeiteten Zellen in blau angezeigt werden. Dies ist besonders nützlich, wenn du nur die Zeilen identifizieren möchtest, die Änderungen enthalten, ohne jede einzelne Zelle nachverfolgen zu müssen.


Tipps für Profis

  • Nutze die Konstante Mode im VBA-Code, um das Makro bei Bedarf zu aktivieren oder zu deaktivieren, ohne den gesamten Code zu löschen.
  • Verwende xlThemeColorAccent1, um die Schriftfarbe der geänderten Zellen anzupassen. So kannst du eine visuelle Unterscheidung zwischen bearbeiteten und unveränderten Zellen schaffen.
  • Überlege, ob du eine weitere Spalte hinzufügen möchtest, um die Zeit der letzten Änderung zu protokollieren. Das kann nützlich sein, um nachzuvollziehen, wann Änderungen vorgenommen wurden.

FAQ: Häufige Fragen

1. Kann ich das Makro für mehrere Arbeitsblätter verwenden? Ja, du musst den Code in jedes Arbeitsblatt einfügen, das du überwachen möchtest.

2. Was passiert, wenn ich den VBA-Code ändere? Jede Änderung kann das Verhalten des Makros beeinflussen. Teste Änderungen immer in einer Kopie deiner Datei, um Datenverlust zu vermeiden.

3. Wie kann ich die blauen Schriftfarben zurücksetzen? Du kannst das Makro anpassen, um die Schriftfarbe zurückzusetzen, oder alle Zellen manuell markieren und die Schriftfarbe auf „Automatisch“ zurücksetzen.

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