Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Änderung in Zellen überwachen

Änderung in Zellen überwachen
06.03.2014 15:18:02
Joachim
Hallo,
mittels vlookup hole ich Datensätze aus einer Tabelle in eine andere. Das Durchscrollen der Datensätze erfolgt mit einen SpinButton. Auch die direkte Eingabe der Lfd-Nr ist möglich. Damit das Makro mit dem vlookup läuft, arbeite ich auf der Tabelle mit worksheet_calculate. Kleiner Trick: eine kleine Formel auf der Tabelle und schon läufts.
Jetzt hab ich Lesefelder, die aber überschrieben werden dürfen. Z.B D5, D8, D11 usw.
Ändert der User an diesen Feldern den Inhalt, soll ein Hinweis kommen, ob die neuen Daten gespeichert werden solln bzw. verworfen, wenn er weiterscrollen will.
Es geht also um die Änderung in bestimmten Zellen.
Mach ich das mit worksheet_change oder mit worksheet_selectionChange? Und wie?
Gruss
Joachim

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Änderung in Zellen überwachen
06.03.2014 15:58:38
EtoPHG
Hallo Joachim,
In das Tabellenblatt:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 4 And Target.Row > 1 And Target.Count = 1 Then
If vbYes  MsgBox("Wollen Sie die Änderung in " & _
Target.Address(0, 0) & " speichern?", _
vbYesNo + vbExclamation, "Bestätigung") Then
With Application
.EnableEvents = False
.Undo
.EnableEvents = True
End With
End If
End If
End Sub

Gruess Hansueli

Anzeige
AW: Änderung in Zellen überwachen
07.03.2014 09:46:45
Joachim
Hallo,
kann ich das auf nur bestimmte Zellen einschränken? Also nur bei Änderungen in D5 oder D8 oder H13 oder N16 ...
Gruss
Joachim

Ja ...
07.03.2014 10:13:47
Matthias
Hallo
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("D5,D8,H13,N16")) Is Nothing And Target.Count = 1 Then
If vbYes  MsgBox("Wollen Sie die Änderung in " & Target.Address(0, 0) & " speichern?",  _
vbYesNo + vbExclamation, "Bestätigung") Then
With Application
.EnableEvents = False
.Undo
.EnableEvents = True
End With
End If
End If
End Sub
Gruß Matthias

Anzeige
AW: Änderung in Zellen überwachen
07.03.2014 10:18:22
Rudi
Hallo,
eine Möglichkeit:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 Then
If Not Intersect(Target, Union(Range("D5"), Range("D8"), Range("H13"), Range("N8"))) Is  _
Nothing Then
If vbYes  MsgBox("Wollen Sie die Änderung in " & _
Target.Address(0, 0) & " speichern?", _
vbYesNo + vbExclamation, "Bestätigung") Then
With Application
.EnableEvents = False
.Undo
.EnableEvents = True
End With
End If
End If
End If
End Sub

Könnte evtl. einfacher gehen, wenn man wüsste, welche Zellen du überwachen willst.
Gruß
Rudi

Anzeige
AW: Änderung in Zellen überwachen
07.03.2014 10:26:16
Joachim
Hallo Matthias und Rudi,
vielen Dank für die Vorschläge, werde sie mal ausprobieren.
Gruss
Joachim
;
Anzeige
Anzeige

Infobox / Tutorial

Änderungen in Zellen überwachen in Excel


Schritt-für-Schritt-Anleitung

Um Änderungen in bestimmten Zellen in Excel zu überwachen, kannst Du das VBA-Ereignis Worksheet_Change verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

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

  2. Wähle das entsprechende Blatt aus der Projektliste auf der linken Seite.

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

    Private Sub Worksheet_Change(ByVal Target As Range)
        If Not Intersect(Target, Range("D5,D8,H13,N16")) Is Nothing And Target.Count = 1 Then
            If vbYes = MsgBox("Wollen Sie die Änderung in " & Target.Address(0, 0) & " speichern?", vbYesNo + vbExclamation, "Bestätigung") Then
                With Application
                    .EnableEvents = False
                    .Undo
                    .EnableEvents = True
                End With
            End If
        End If
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Ändere die Werte in den Zellen D5, D8, H13 oder N16, um die Funktion zu testen.


Häufige Fehler und Lösungen

  • Fehler: Der Code wird nicht ausgeführt.

    • Stelle sicher, dass der Code im richtigen Arbeitsblatt-Modul eingefügt ist.
  • Fehler: Die MsgBox erscheint nicht.

    • Überprüfe, ob Du die Zellen D5, D8, H13 oder N16 änderst. Der Code reagiert nur auf Änderungen in diesen Zellen.
  • Fehler: Excel stürzt ab oder reagiert nicht.

    • Achte darauf, dass die EnableEvents-Eigenschaft korrekt gesetzt ist, um Endlosschleifen zu vermeiden.

Alternative Methoden

Eine weitere Möglichkeit, Änderungen in Zellen zu überwachen, ist die Verwendung von Worksheet_SelectionChange, um bei der Auswahl einer Zelle eine Benachrichtigung anzuzeigen. Hier ein Beispiel:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Range("D5,D8,H13,N16")) Is Nothing Then
        MsgBox "Du hast die Zelle " & Target.Address(0, 0) ausgewählt. Denk daran, die Änderungen zu speichern!
    End If
End Sub

Diese Methode ist nützlich, wenn Du eine Warnung zeigen möchtest, bevor eine Zelle bearbeitet wird.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du den Code anpassen kannst:

  1. Überwachung mehrerer Zellen:

    • Du kannst die Zellen in der Range-Funktion anpassen, um mehr oder weniger Zellen zu überwachen.
  2. Verschiedene Nachrichten:

    • Ändere den Text in der MsgBox, um spezifische Anweisungen für den Benutzer zu geben, z.B. "Bist du sicher, dass du diese Änderung vornehmen möchtest?".
  3. Speichermöglichkeit:

    • Du kannst auch eine Option hinzufügen, um die Änderungen zu speichern, anstatt sie rückgängig zu machen.

Tipps für Profis

  • Verwende Union für komplexere Zellüberwachung: Wenn Du viele Zellen hast, die Du überwachen möchtest, kannst Du die Union-Funktion verwenden, um den Code übersichtlicher zu gestalten:

    If Not Intersect(Target, Union(Range("D5"), Range("D8"), Range("H13"), Range("N16"))) Is Nothing Then
  • Behalte die Performance im Auge: Bei großen Arbeitsblättern kann es hilfreich sein, die Anzahl der überwachten Zellen zu minimieren, um die Performance von Excel nicht zu beeinträchtigen.

  • Teste Deinen Code: Stelle sicher, dass Du Deine VBA-Codes gut testest, bevor Du sie in wichtigen Dokumenten einsetzt.


FAQ: Häufige Fragen

1. Kann ich das Makro in Excel Online verwenden?
Leider unterstützt Excel Online keine VBA-Makros. Du musst die Desktop-Version verwenden.

2. Was passiert, wenn ich die MsgBox mit "Nein" beantworte?
In diesem Fall wird die Änderung gespeichert, und der Wert bleibt in der Zelle.

3. Wie kann ich andere Zellen hinzufügen, die überwacht werden sollen?
Du kannst einfach die Zelladressen in der Range-Funktion erweitern, z.B. Range("D5,D8,H13,N16,X20").

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige