Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1944to1948
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
Wert vor Zelländerung speichern
29.09.2023 08:28:09
Haderlein
Hallo Zusammen,
Zelle A2 steht eine Jahreszahl z.B. 2024. DIese soll der User bei belieben verändern. z.B. 2023. Ich möchte aber die Jahreszahl vor Änderung in eine andere Zelle z.B. A3 speichern. Wie kriege ich das hin, dass der Wert vor der Änderung ausgelesen wird?
Ich habe leider keinen Ansatz außer das Change-Ereignis.
Vielen DAnk.

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

Betreff
Datum
Anwender
Anzeige
AW: Wert vor Zelländerung speichern
29.09.2023 08:35:36
RPP63
Moin!
Ich würde nicht A3 nehmen, weil A3 nach Bestätigung der Änderung in A2 standardmäßig aktiviert ist.
Ich nehme hier D1
Ins Modul der Tabelle:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

With Target
If .CountLarge = 1 And .Address = "$A$2" Then
.Offset(-1, 3) = .Value
End If
End With
End Sub

Gruß Ralf
AW: Wert vor Zelländerung speichern
29.09.2023 11:35:51
Haderlein
Hallo Ralf,
das funktioniert erstmal, danke. Wie müsste der Code aussehen, wenn ich den "alten" Wert nicht in D1 speichern will, sondern im Tabellenblatt und Zelle Worksheets("DINE").Cells(1,1)?
Grüße
Anzeige
AW: Wert vor Zelländerung speichern
29.09.2023 10:50:30
GerdL
Moin H.

Dim varOld As Variant


Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False
If Target.Address(0, 0) = "A2" Then
If Not IsEmpty(Target) Then
If Not Target.Value Like "####" Then
Application.Undo
Else
Range("D1") = varOld
varOld = Target.Value
End If
End If
End If
Application.EnableEvents = True

End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Target.Address(0, 0) = "A2" Then varOld = Target.Value

End Sub

Gruß Gerd

Anzeige
AW: Wert vor Zelländerung speichern
29.09.2023 11:29:39
Haderlein
Hallo Gerd,
vielen Dank. Ich habe deinen Code entsprechend eingefügt. Allerdings wird mir lediglich das aktuelle eingetragene Jahr in D1 geschrieben.
Vergleichbar mit D1=A2
Heißt, er speichert nicht den vorherigen Wert in D1 ab. Und nun?
AW: Wert vor Zelländerung speichern
29.09.2023 15:06:34
Rudi Maintaire
Hallo,
funktioniert einwandfrei.
Kann man allerdings auf's Change-Event reduzieren.
Private Sub Worksheet_Change(ByVal Target As Range)

Dim vntVAL
If Target.Address(0, 0) = "A2" Then
Application.EnableEvents = False
vntVAL = Target
Application.Undo
Range("D1") = Target
Target = vntVAL
End If
Application.EnableEvents = True
End Sub

Gruß
Rudi
Anzeige

Links zu Excel-Dialogen

Anzeige

Infobox zum Thema

EXCEL - Wert vor Zelländerung speichern


Inhaltsverzeichnis


Die Fragestellung


Du möchtest den Wert einer Zelle in Excel vor einer Änderung speichern, um diesen später nutzen zu können.


Erläuterung des Problems {#erläuterung-des-problems}


In Excel gibt es keine eingebaute Funktion, die automatisch den Wert einer Zelle vor einer Änderung speichert. Dies kann jedoch nützlich sein, um Änderungen nachzuvollziehen oder um bei Bedarf zu einem früheren Wert zurückzukehren.


Lösung des Problems {#lösung-des-problems}


Um den Wert einer Zelle vor einer Änderung zu speichern, kannst du das Worksheet_Change Ereignis in VBA verwenden:

  1. Öffne den VBA-Editor mit ALT + F11.
  2. Doppelklicke im Projekt-Explorer auf das Arbeitsblatt, auf dem du die Änderungen überwachen möchtest.
  3. Füge den folgenden Code in das Codefenster des Arbeitsblatts ein:
Private VorherigerWert As Variant

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    VorherigerWert = Target.Value
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim AktuellerWert As Variant
    AktuellerWert = Target.Value
    ' Hier kannst du den vorherigen Wert nutzen, z.B. in einer anderen Zelle speichern
    ' Beispiel: ThisWorkbook.Sheets("Log").Range("A1").Value = VorherigerWert
    ' Setze den vorherigen Wert zurück
    VorherigerWert = AktuellerWert
End Sub

Dieser Code speichert den Wert der aktuell ausgewählten Zelle, bevor sie geändert wird, und stellt ihn zur Verfügung, nachdem die Änderung erfolgt ist.


Anwendungsbeispiele aus der Praxis


  • Änderungsprotokoll: Erstellung eines Protokolls, das alle Änderungen an den Daten festhält.
  • Rückgängig-Funktion: Implementierung einer benutzerdefinierten Rückgängig-Funktion, die es erlaubt, zu vorherigen Werten zurückzukehren.

Tipps


  • Überlege dir, ob du den vorherigen Wert in einer versteckten Spalte oder auf einem separaten Arbeitsblatt speichern möchtest, um die Übersichtlichkeit zu bewahren.
  • Achte darauf, dass das Loggen von Daten die Performance beeinträchtigen kann, wenn viele Änderungen in kurzer Zeit erfolgen.

Verwandte Themenbereiche


  • VBA-Programmierung in Excel
  • Ereignisgesteuerte Programmierung
  • Datenverfolgung und -management

Zusammenfassung


Das Speichern des Werts einer Zelle vor einer Änderung in Excel kann durch die Verwendung von VBA und dem Umgang mit dem Worksheet_Change Ereignis erreicht werden. Dies ermöglicht es, Änderungen zu protokollieren und bei Bedarf zu einem früheren Wert zurückzukehren. Solche Anpassungen können für fortgeschrittene Datenmanagementaufgaben und zur Erstellung von Änderungsprotokollen sehr nützlich sein.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige