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

Makro ausführen, wenn Zelleninhalt gelöscht wird

Forumthread: Makro ausführen, wenn Zelleninhalt gelöscht wird

Makro ausführen, wenn Zelleninhalt gelöscht wird
18.09.2015 14:18:03
Thomas
Hi zusammen,
ich würde gerne ein Makro ausführen, wenn sich eine bestimmte Zelle ändert. Die Lösung hierfür habe ich wie folgt schon ausprobiert:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$E$10" Then Call meineFunktion()
End Sub
Einziges Problem: Das funktioniert nicht, wenn man den Zelleninhalt löscht! Diesen Fall muss ich aber auch unbedingt auch abfangen.
Ideen?

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Makro ausführen, wenn Zelleninhalt gelöscht wird
18.09.2015 14:33:22
Rudi
Hallo,
dann frag doch ab, ob die Zelle leer ist.
Gruß
Rudi

AW: Makro ausführen, wenn Zelleninhalt gelöscht
18.09.2015 14:38:25
Daniel
Hi
mit If Worksheerfunction.CountA(Target) = 0 Then kannst du ermitteln, ob Zellinhalte gelöscht wurden.
Gruß Daniel

AW: Makro ausführen, wenn Zelleninhalt gelöscht
18.09.2015 14:43:46
Thomas
Hi Rudi, Hi Daniel,
das hat perfekt funktioniert! Das habe ich gesucht :-) Du hattest übrigens einen kleinen Typo ;-)
If Worksheetfunction.CountA(Target) = 0 Then

Anzeige
AW: Makro ausführen, wenn Zelleninhalt ...
18.09.2015 14:35:18
EtoPHG
Hallo Thomas,
Zitat: Einziges Problem: Das funktioniert nicht, wenn man den Zelleninhalt löscht!
Was soll denn das heissen? ...und was heisst VBA gut?
Natürlich funktioniert dein Code DANN und NUR DANN wenn genau E10 geändert wird! Sind aber noch andere Zellen betroffen, dann ist es falsch mit der .Address Eigenschaft zu arbeiten!
Willst du jegliche Änderungen im Blatt abfangen, bei denen die Zelle E10 betroffen ist, muss dein Code so aussehen:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Cells(10, 5)) Is Nothing Then Call meineFunktion
End Sub
Gruess Hansueli
Anzeige
Anzeige

Infobox / Tutorial

Makro ausführen, wenn Zelleninhalt gelöscht wird


Schritt-für-Schritt-Anleitung

Um ein Makro auszuführen, wenn der Inhalt einer bestimmten Zelle gelöscht wird, kannst du die folgenden Schritte befolgen:

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

  2. Wähle das entsprechende Arbeitsblatt aus, für das das Makro gelten soll.

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

    Private Sub Worksheet_Change(ByVal Target As Range)
       If Not Intersect(Target, Range("E10")) Is Nothing Then
           If WorksheetFunction.CountA(Target) = 0 Then
               Call meineFunktion
           End If
       End If
    End Sub
  4. Ersetze meineFunktion mit dem Namen deiner Funktion, die du ausführen möchtest.

  5. Schließe den VBA-Editor und teste die Funktion, indem du den Inhalt der Zelle E10 löschst.


Häufige Fehler und Lösungen

  • Fehler: Das Makro wird nicht ausgeführt, wenn die Zelle E10 geändert wird.

    • Lösung: Stelle sicher, dass der Code im richtigen Arbeitsblattmodul eingefügt wurde und dass die Zelle E10 korrekt referenziert ist.
  • Fehler: Der Code funktioniert nicht, wenn andere Zellen betroffen sind.

    • Lösung: Nutze den Intersect-Befehl, um festzustellen, ob die Zelle E10 verändert wurde, egal ob sie direkt editiert oder geleert wird.

Alternative Methoden

Eine alternative Methode besteht darin, das Worksheet-Change-Ereignis zu verwenden, um auf Änderungen in mehreren Zellen gleichzeitig zu reagieren. Du kannst den Target-Bereich erweitern, um mehrere Zellen zu überwachen:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("E10:E20")) Is Nothing Then
        If WorksheetFunction.CountA(Target) = 0 Then
            Call meineFunktion
        End If
    End If
End Sub

Diese Methode ist nützlich, wenn du mehrere Zellen im gleichen Bereich überwachen möchtest.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du das Makro anpassen kannst:

  1. Benachrichtigung bei Löschung: Du kannst eine MsgBox hinzufügen, die dich benachrichtigt, wenn der Inhalt einer Zelle gelöscht wird:

    Private Sub Worksheet_Change(ByVal Target As Range)
       If Not Intersect(Target, Range("E10")) Is Nothing Then
           If WorksheetFunction.CountA(Target) = 0 Then
               MsgBox "Inhalt von E10 wurde gelöscht!"
               Call meineFunktion
           End If
       End If
    End Sub
  2. Protokollierung: Du kannst Änderungen in einer Protokolldatei speichern, wenn Zellinhalte gelöscht werden.


Tipps für Profis

  • Verwende Application.EnableEvents: Um rekursive Aufrufe zu vermeiden, setze Application.EnableEvents = False am Anfang des Codes und Application.EnableEvents = True am Ende.

  • Debugging: Nutze Debug.Print zur Ausgabe von Variablenwerten in das Immediate-Fenster für einfaches Debugging.

  • Reagiere auf mehrere Zellen: Wenn du mehr als eine Zelle überwachen möchtest, erweitere den Intersect-Befehl entsprechend.


FAQ: Häufige Fragen

1. Frage: Warum funktioniert mein Makro nicht, wenn ich den Inhalt lösche?
Antwort: Stelle sicher, dass du die WorksheetFunction.CountA-Funktion korrekt implementiert hast, um leere Zellen zu erkennen.

2. Frage: Kann ich das Makro für andere Zellen anpassen?
Antwort: Ja, einfach die Zellreferenz in der Intersect-Funktion ändern, um andere Zellen zu berücksichtigen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige