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

Forumthread: VBA: Änderungen auf worksheet erkennen

VBA: Änderungen auf worksheet erkennen
17.01.2015 01:09:01
bernhardtautz
Level: Excel geht, VBA absolute beginner
Liebe VBA Experten,
kann man auf einem worksheet Änderungen erfassen/erkennen unabhängig davon, ob gespeichert oder gedruckt wird. Ich suche eine Art Echtzeiterkennung ob auf einem Blatt etwas geändert wird.
Bestimmt ist das für Euch kein Problem. Wie spreche ich das für einen bestimmten Zellbereich an (z.B. A1-Z10, unter Berücksichtigung von teilweise verbundenen Zellen) ?
Herzlichen Dank im Voraus !
LG Bernhard

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: VBA: Änderungen auf worksheet erkennen
17.01.2015 02:58:24
Matthias
Hallo
Änderungen auf worksheet erkennen
Ja, das kann Excel/VBA erkennen.
Nun kommt es darauf an, was Du genau & wann überprüfen willst.
Private Sub Worksheet_Change(ByVal Target As Range)
MsgBox "Zelle " & Target.Address & " wurde gerade geändert"
End Sub
Gibt Dir z.B. immer eine Info welche Zelle Du gerade geändert hast.
Für einen bestimmten Zellbereich:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:Z10")) Is Nothing Then
MsgBox "Zelle " & Target.Address & " wurde geändert"
End If
End Sub

Ansonsten schau Dir bitte auch die Saved-Eigenschaft an.
Damit kann man erkennen, ob generell eine Änderung in der Datei vorgenommen wurde.
Gruß Matthias

Anzeige
AW: VBA: Änderungen auf worksheet erkennen
18.01.2015 00:01:04
bernhardtautz
Vielen Dank Matthias, das hat mir sehr geholfen !
LG Bernhard

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Änderungen auf Worksheet erkennen mit VBA


Schritt-für-Schritt-Anleitung

Um Änderungen auf einem Worksheet in Excel zu erkennen, kannst du das folgende VBA-Skript verwenden. Dieses Skript wird automatisch ausgeführt, wenn eine Zelle in einem bestimmten Bereich geändert wird.

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

  2. Klicke im Projekt-Explorer mit der rechten Maustaste auf das betreffende Worksheet und wähle „Code anzeigen“.

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

    Option Explicit
    Private Sub Worksheet_Change(ByVal Target As Range)
       If Not Intersect(Target, Range("A1:Z10")) Is Nothing Then
           MsgBox "Zelle " & Target.Address & " wurde geändert"
       End If
    End Sub
  4. Schließe den VBA-Editor und kehre zu deinem Worksheet zurück.

  5. Teste die Funktion, indem du eine Zelle im Bereich A1:Z10 änderst. Es sollte eine Nachricht erscheinen, die dir mitteilt, welche Zelle geändert wurde.


Häufige Fehler und Lösungen

  • Fehler: Es erscheint keine Nachricht, wenn ich eine Zelle ändere.

    • Lösung: Überprüfe, ob das Skript im richtigen Worksheet platziert ist. Der Code muss im Codefenster des spezifischen Worksheets stehen, nicht in einem Modul.
  • Fehler: Der Code funktioniert nicht bei verbundenen Zellen.

    • Lösung: Stelle sicher, dass die verbundenen Zellen im Bereich A1:Z10 enthalten sind. Der Code sollte auch mit verbundenen Zellen arbeiten, aber es kann hilfreich sein, die verbundenen Zellen einzeln zu überprüfen.

Alternative Methoden

Wenn du keine VBA-Lösung verwenden möchtest, gibt es auch einige alternative Ansätze:

  • Überwachung der "Saved"-Eigenschaft: Du kannst die Saved-Eigenschaft in VBA verwenden, um zu überprüfen, ob Änderungen gespeichert wurden. Diese Methode ist jedoch weniger präzise, da sie nicht in Echtzeit funktioniert.

  • Excel-Formeln: Für einfache Änderungen kannst du auch Excel-Formeln verwenden, um bestimmte Bedingungen zu überprüfen, jedoch wird dies nicht in Echtzeit sein.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du die Änderungen in einem bestimmten Bereich protokollieren kannst:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A1:Z10")) Is Nothing Then
        Dim LogSheet As Worksheet
        Set LogSheet = ThisWorkbook.Sheets("Log") ' Stelle sicher, dass ein Log-Sheet existiert
        LogSheet.Cells(LogSheet.Rows.Count, 1).End(xlUp).Offset(1, 0).Value = "Zelle " & Target.Address & " wurde geändert am " & Now
    End If
End Sub

In diesem Beispiel wird jede Änderung in dem Bereich A1:Z10 in einem separaten Log-Sheet protokolliert.


Tipps für Profis

  • Verwende Application.EnableEvents: Wenn du mehrere Änderungen an Zellen vornimmst und keine Benachrichtigungen erhalten möchtest, kannst du Application.EnableEvents = False zu Beginn deines Codes hinzufügen und am Ende wieder auf True setzen.

  • Fehlerbehandlung einfügen: Denk daran, Fehlerbehandlungsroutinen einzubauen, um unerwartete Fehler während der Ausführung deines Codes zu vermeiden.


FAQ: Häufige Fragen

1. Kann ich mehrere Zellbereiche gleichzeitig überwachen?
Ja, du kannst mehrere Bereiche überwachen, indem du die Intersect-Funktion entsprechend erweiterst.

2. Wie kann ich die Benachrichtigung anpassen?
Du kannst den Text in der MsgBox-Funktion ändern, um spezifischere Informationen anzuzeigen.

3. Funktioniert das auch in Excel Online?
Leider sind VBA-Makros in Excel Online nicht unterstützbar. Dieses Skript funktioniert nur in der Desktop-Version von Excel.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige