Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1424to1428
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

Alte Zellwerte bei Zellwertänderung archivieren

Alte Zellwerte bei Zellwertänderung archivieren
18.05.2015 15:32:21
Christoph
Hallo liebes Forum,
ich habe folgenden Sub zusammen geschrieben/kopiert.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count  1 Then Exit Sub
If Not Intersect(Range("J10:J1000"), Target) Is Nothing Then
ActiveSheet.Unprotect "heute"
Target.Offset(0, 1).Value = Date
ActiveSheet.Protect "heute"
Else
If Not Intersect(Target, Range("Z10:Z100")) Is Nothing Then
ActiveSheet.Unprotect "heute"
Target.Offset(0, 1) = Target.Offset(0, 1) + 1
ActiveSheet.Protect "heute"
If Intersect(Target, Range("Z10:Z101")) Is Nothing Then Exit Sub
ActiveSheet.Unprotect "heute"
Cells(Cells(Rows.Count, Target.Row - 8).End(xlUp).Row + 1, Target.Row - 8) = Target.Value
ActiveSheet.Protect "heute"
End If
End If
End Sub

Interessant wird es gerade bei der Archivierung der Daten. Ich habe ein Feld in dem Datumsangaben von Kundenbesuchen hinterlegt werden und möchte jedesmal wenn ein Datum neu eingegeben wird, das alte in einem extra Sheet hinterlegen lassen.
If Intersect(Target, Range("Z10:Z101")) Is Nothing Then Exit Sub
ActiveSheet.Unprotect "heute"
Cells(Cells(Rows.Count, Target.Row - 8).End(xlUp).Row + 1, Target.Row - 8) = Target.Value
ActiveSheet.Protect "heute"
End If
Innerhalb eines Blattes funktioniert der Code wunderbar. Allerdings bin ich noch sehr unbedarft im Umgang mit VBA und weiß nicht wie ich die Archivierung in einem extra Blatt hinbekomme. Zusätzlich wäre es noch gut wenn ich das Datum mit dem Namen des Außendienstmitarbeiters zusammen bekommen könnte. Die Namen sind nochmal in einer extra Spalte aufgeführt.
Lieben Dank für die Hilfe im Vorraus und viele Grüße,
Christoph

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Alte Zellwerte bei Zellwertänderung archivieren
20.05.2015 08:47:26
Christoph
Hallo, ist die Frage zu spezifisch?
Das wichtigste wäre das mir die hier ausgegebenen Werte
If Intersect(Target, Range("Z10:Z101")) Is Nothing Then Exit Sub
ActiveSheet.Unprotect "heute"
Cells(Cells(Rows.Count, Target.Row - 8).End(xlUp).Row + 1, Target.Row - 8) = Target.Value
ActiveSheet.Protect "heute"
End If
in ein extra Blatt kommen. Kann mir da wirklich niemand helfen oder stimmt etwas mit dem Post nicht?
Danke und viele Grüße,
Christoph

AW: Alte Zellwerte bei Zellwertänderung archivieren
20.05.2015 15:25:01
Michael
Hallo Christoph,
füge doch mal das da anstelle Deiner Zeile mit Cells(cells usw. ein:
       With Sheets("Archiv")
z = .Range("G1")
.Range("G1") = .Range("G1") + 1
.Range("A" & z) = Target.Value
.Range("B" & z) = Target.Offset(0, 2).Value
.Range("C" & z) = Target.Offset(0, 1).Value
End With

Anzeige
AW: Alte Zellwerte bei Zellwertänderung archivieren
21.05.2015 15:57:06
Christoph
Hi, Michael, ein dickes Danke! funktioiniert soweit so gut.
Allerdings versteh ich nicht wie du die auszugebenden Zellen addressiert hast.
Der Kundenname den ich noch bräuchte ist in Spalte E untergebracht.
Der Außendienstler befindet sich in Spalte N.
Wie müsste man denn da noch umschreiben?
Danke und viele Grüße,
Christoph

AW: Alte Zellwerte bei Zellwertänderung archivieren
21.05.2015 17:42:05
Michael
Hallo Christoph,
ich sehe halt Deine Daten nicht, aber Target.Offset(reihe,spalte).Value holt sich die Daten aus der Zelle, die reihe Zeilen darunter bzw. spalte Spalten rechts daneben liegt.
Hilft Dir das?
Schöne Grüße,
Michael

Anzeige
sorry, wollte noch nicht absenden
20.05.2015 15:30:05
Michael
Ja, also, das Teil kopiert drei Zellen (target und die zwei rechts daneben) ins sheet "Archiv", wobei ich zu Testzwecken einfach in G1 eine Zeilennummer reingesteckt habe. z kann man natürlich auch anders ermitteln, aber das weißt Du ja.
Ich hätte erwartet, daß offset(0,-1) auch geht, aber mein X2000 hat gezickt, also verwende schlimmstenfalls eben positive Werte.
Du kannst den Code natürlich auch an der Stelle einfügen, *bevor* Du Änderungen vornimmst, dann hast Du die gewünschte "Archiv-Funktion".
Schöne Grüße,
Michael

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige