Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1632to1636
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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
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

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige