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

wert vor worksheet_change abfragen

Forumthread: wert vor worksheet_change abfragen

wert vor worksheet_change abfragen
30.05.2006 15:22:54
Emil
Hallo,
kann man beim worksheet_change den Wert abfragen, der vor der Änderung in der geänderten Zelle stand?
Gruß Emil
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: wert vor worksheet_change abfragen
30.05.2006 16:10:03
Reinhard
Hi Emil,
Option Explicit
Public Merker
Private Sub Worksheet_Change(ByVal Target As Range)
If Merker <> "" Then
MsgBox "alterWert in Zelle " & Target.Address(0, 0) & " war " & Merker
Else
MsgBox "Zelle " & Target.Address(0, 0) & " war leer."
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
Merker = Target.Value
End Sub

Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
Anzeige
AW: wert vor worksheet_change abfragen
02.06.2006 09:10:05
Emil
Hallo Reinhard,
vielen Dank für die Antwort.
Gruß Emil
;
Anzeige
Anzeige

Infobox / Tutorial

Wert vor Worksheet_Change abfragen in Excel


Schritt-für-Schritt-Anleitung

Um den Wert einer Zelle vor der Änderung im Worksheet_Change-Ereignis abzufragen, kannst du folgende Schritte ausführen:

  1. Öffne deine Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Wähle das entsprechende Arbeitsblatt im Projektfenster aus.

  3. Füge den folgenden Code in das Codefenster des Arbeitsblattes ein:

    Option Explicit
    Public Merker
    
    Private Sub Worksheet_Change(ByVal Target As Range)
       If Merker <> "" Then
           MsgBox "Alter Wert in Zelle " & Target.Address(0, 0) & " war " & Merker
       Else
           MsgBox "Zelle " & Target.Address(0, 0) & " war leer."
       End If
    End Sub
    
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       If Target.Cells.Count > 1 Then Exit Sub
       Merker = Target.Value
    End Sub
  4. Schließe den VBA-Editor und kehre zu deinem Arbeitsblatt zurück.

  5. Teste die Funktion, indem du eine Zelle auswählst, ihren Wert änderst und beobachtest, ob die vorherige Eingabe im Meldungsfeld angezeigt wird.


Häufige Fehler und Lösungen

  • Fehler: "Komponente nicht gefunden"

    • Lösung: Stelle sicher, dass du den Code im richtigen Arbeitsblatt-Modul eingefügt hast, nicht in einem allgemeinen Modul.
  • Fehler: Meldung zeigt keinen alten Wert

    • Lösung: Überprüfe, ob der Merker-Wert korrekt gesetzt wird. Achte darauf, dass der Worksheet_SelectionChange-Code ausgeführt wird, bevor du die Zelle änderst.

Alternative Methoden

Eine alternative Methode besteht darin, den Wert in einer versteckten Zelle zu speichern, bevor die Änderung erfolgt. Du könntest den alten Wert in einer benachbarten Zelle sichern, wobei das Vorgehen ähnlich bleibt.

  1. Füge eine zusätzliche Spalte neben deiner Datenreihe hinzu, um die alten Werte zu speichern.
  2. Verwende die Worksheet_Change und Worksheet_SelectionChange Ereignisse, um die alten Werte in diese Spalte zu übertragen.

Praktische Beispiele

Angenommen, du hast ein Arbeitsblatt mit Verkaufszahlen in Spalte A. Um die alten Werte in Spalte B zu speichern, könntest du folgenden Code verwenden:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Me.Range("A:A")) Is Nothing Then
        Me.Cells(Target.Row, 2).Value = Merker
    End If
End Sub

Hier wird der alte Wert in die Spalte B geschrieben, wenn sich der Wert in Spalte A ändert.


Tipps für Profis

  • Verwende Application.EnableEvents = False am Anfang deiner Worksheet_Change-Prozedur, um rekursive Aufrufe zu vermeiden. Vergiss nicht, es am Ende wieder auf True zu setzen.

  • Nutze Fehlerbehandlungsroutinen, um unerwartete Probleme zu behandeln und sicherzustellen, dass der Code reibungslos läuft.


FAQ: Häufige Fragen

1. Kann ich den alten Wert auch in einer anderen Arbeitsmappe abfragen?
Antwort: Ja, du kannst den Wert in einer anderen Arbeitsmappe speichern, indem du die Referenz zur Arbeitsmappe im Code anpasst.

2. Funktioniert dieser Code auch in Excel 365?
Antwort: Ja, der Code funktioniert in Excel 365 und allen anderen Versionen, die VBA unterstützen. Achte darauf, dass Makros aktiviert sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige