Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
920to924
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
920to924
920to924
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

(Bereichs)Änderungen in Liste verfolgen

(Bereichs)Änderungen in Liste verfolgen
29.10.2007 19:43:00
Reiner
Hallo VBA-Profis
Mit folgendem Code kann bereits (Zellenselektiv) eine Änderung in der Liste(nur bestimmte Spalten) über "Ä-Kennzeichen(Spalte 62) erfasst werden. Da aber in der Liste auch mal "Spalten/Bereiche" markiert und kopiert/geändert werden, kommt der Code hier nicht zurecht.
Was kann man also für bei einer Bereichsmarkierung/änderung tun um dass Ä-Kennzeichen in der jeweiligen Zeile zu ereichen: und Feherlmeldungen auszuschließen?
>>>>>>>>>>>>>>>>

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim SpTimeStamp As Integer, SpAenderung As Integer
SpTimeStamp = 61 'Spalte mit Änderungszeitpunkt
SpAenderung = 62 'Spalte für ÄnderungsMarkierung
'Wichtige Spalten die bei manueller Änderung ein "Ä" auslösen:
'1-4 TNR
'17
'34
'37 SWP
'38 LT
'39
'41 EM
If Target.Column  5 _
And Not (Target.Column = SpTimeStamp Or Target.Column = SpAenderung) Then
'Die Target.Columns definieren die wichtigen Spalten nach denen Speicherung ratsam ist
'Prüfen, ob Inhalt tatsächlich geändert wurde
If Target.Value  LastWert Then
Me.Cells(Target.Row, SpTimeStamp) = Now
Me.Cells(Target.Row, SpAenderung) = "Ä"
End If
End If
End Sub



Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
If Target.Cells.Count = 1 Then
'Wert der selektierten Zelle speichern
LastWert = Target.Value
End If
End Sub


Vielen Dank
Reiner

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: (Bereichs)Änderungen in Liste verfolgen
29.10.2007 22:47:43
Daniel
Hi
das Hauptproblem ist, daß du dir bei einer Zellmarkierung von mehreren Zellen (im Zweifelsfall alle) du dir jeden Zellewert merken musst, um anschließend auf eine Veränderung prüfen zu können.
Ich habs mal so gelöst, daß ich beim Wechsel der Zellmarkierung das komplette Blatt ein ein anderes Blatt kopiere (ich habs "Zwischenspreicher" genannt).
so kann ich dann nach der Aktion jede Zelle der Auswahl einzeln auf Veränderung prüfen.
das funktioniert auch, wenn nicht zusammenhängende Zellen selektiert wurden (mit STRG)
das zweite Blatt müsstest du noch anlegen, die Makros dazu sehen dann so aus:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngPrüf As Range
Dim Zelle As Range
Dim SpTimeStamp As Integer, SpAenderung As Integer
SpTimeStamp = 61 'Spalte mit Änderungszeitpunkt
SpAenderung = 62 'Spalte für ÄnderungsMarkierung
Set rngPrüf = Union(Range("A:D"), Columns(17), Columns(34), Range("AK:AM"), Columns(41))
Set rngPrüf = Intersect(Range("5:65536"), rngPrüf)
Set rngPrüf = Intersect(Target, rngPrüf)
If rngPrüf Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each Zelle In rngPrüf
If Zelle.Value  Sheets("Zwischenspeicher").Range(Zelle.Address) Then
Me.Cells(Zelle.Row, SpTimeStamp) = Now
Me.Cells(Zelle.Row, SpAenderung) = "Ä"
End If
Next
Application.EnableEvents = True
End Sub



Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = False
Me.UsedRange.Copy
Sheets("Zwischenspeicher").Range(Me.UsedRange.Address).PasteSpecial xlPasteValues
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub


allerdings weiß ich nicht ob das Kopieren der Daten bei grossen Datenmengen noch praktiabel ist.
Gruß, Daniel

Anzeige
AW: (Bereichs)Änderungen in Liste verfolgen
30.10.2007 13:32:47
Fabian
Hallo Daniel,
wir haben uns ein zweites Blatt für den Zwischenspeicher angelegt, mit dem wir den Code leider nicht erfolgreich testen konnten. Das Kopieren in den Zwischenspeicher hat einwandfrei funktioniert, allerdings wurde beim Kopiervorgang die Bereichsmarkierung im Targetblatt "Gesamt" aufgehoben, somit ist ein kopieren von Bereichen in andere Bereiche unmöglich. Multiplizieren der Werte durch ziehen der Markierung ist dadurch ebenfalls nicht möglich.
Eine Markierung 'Ä' funktioniert weiterhin nur bei einer einzigen veränderten Zelle.
Bei Bereichsmarkierung werden keine Ä-Kennzeichen gesetzt.
Was genau machen wir jetzt falsch?
MfG Fabian und Reiner

Anzeige
AW: (Bereichs)Änderungen in Liste verfolgen
30.10.2007 21:38:00
Daniel
Hi
habt ihr den von mir geposteten Code unverändert übernommen oder habt ihr noch irgendwas verändert oder selbst geschrieben?
den einzigen Eurer Punkte, den ich nachvollziehen kann, ist, daß das "Multiplizieren durch Ziehen" der Markierung keine Änderungsmeldung auslöst.
das liegt daran, daß hierbei Selektion und Aktion gleichzeitig stattfinden, dh. wenn die Zelle bei der Selektion kopiert werden, stehen die neuen Werte schon drin, so daß das zweite Makro dann keine Veränderung mehr feststellen kann.
Wenn man anstelle dieser Aktion das gleichwertige KOPIEREN und AUSFÜLLEN ausführt, funktioniert es wieder einwandfrei.
Ne Lösung fällt mir da spontan auch nicht ein, außer vielleicht, daß man das Kopien der Werte am Ende des WORKSHEET-CHANGE-Makros ausführt und auf das WORKSHEET-SELECITONCHANGE-Makro ganz verzichtet.
könnte funktionieren, müsstet ihr mal ausprobieren.
die anderen Punkte kann ich nicht nachvollziehen, die treten bei mir nicht auf.
einzige erkärung für das Aufheben der Markierung wäre, daß ihr überflüssiger und unzlässigerweise mit SELECT arbeitet.
Falls nicht, müsstet Ihr mal eure Datei hochladen, weil meine Fehlersuchglaskugel grad in Reperatur ist.
Gruß. Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige