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

Change-Ereignis trotz Änderung durch Formel

Forumthread: Change-Ereignis trotz Änderung durch Formel

Change-Ereignis trotz Änderung durch Formel
24.01.2019 23:05:04
onur
Wen es interessiert:
Hier eine sehr simple Methode, um ein Makro auszuführen, auch wenn eine Zelle nicht manuell sondern indirekt durch Formel verändert wurde.
Kann man für einzelne Zellen gut gebrauchen.
Für einen einspaltigen Bereich hätte ich zwar auch eine Methode, aber es wäre etwas komplizierter.
Gruss
Onur
https://www.herber.de/bbs/user/127083.xlsm
Anzeige

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

Betreff
Datum
Anwender
Anzeige
cool owt
24.01.2019 23:11:41
Daniel
AW: Change-Ereignis trotz Änderung durch Formel
28.01.2019 23:47:28
Niclaus
Hallo Onur
Dein Beitrag hat mich zu etwas hirnrissigem verleitet:
Statt Deinem Makro "Private Sub TextBox1_Change()" gebe ich für die Tabelle1 folgende Ereignisprozedur ein:
Private Sub Worksheet_Calculate()
Dim Target
On Error GoTo finis
If Target.Address  "$A$1" Then Exit Sub
finis:
MsgBox "Wert von A1 hast sich geaendert"
End Sub
Und gleich die Frage an Dich: Könnte man so etwas auch hinkriegen, ohne Error zu "missbrauchen"?
Grüsse Niclaus
Anzeige
AW: Change-Ereignis trotz Änderung durch Formel
29.01.2019 00:39:58
onur
Worksheet_Calculate übergibt kein Target wie Worksheet_Change.
Das ändert sich auch nicht, wenn du
Dim Target

schreibst, Target ist einfach nur leer.
AW: Change-Ereignis trotz Änderung durch Formel
29.01.2019 12:15:15
Niclaus
Ich hätte vor dem Tippen denken müssen!
Deine Lösung bleibt super.
Grüsse Niclaus
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Change-Ereignis trotz Änderung durch Formel


Schritt-für-Schritt-Anleitung

Um ein Makro auszuführen, auch wenn eine Zelle durch eine Formel verändert wurde, kannst du die folgende Methode verwenden. Diese Methode funktioniert gut für einzelne Zellen.

  1. Öffne dein Excel-Dokument.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Suche im Projektfenster nach deiner Arbeitsmappe und öffne das richtige Arbeitsblatt.

  4. Füge den folgenden Code in das Arbeitsblattmodul ein:

    Private Sub Worksheet_Calculate()
       Dim Target As Range
       On Error GoTo finis
       If Target.Address <> "$A$1" Then Exit Sub
       MsgBox "Wert von A1 hat sich geändert"
    finis:
    End Sub
  5. Schließe den VBA-Editor und speichere deine Arbeitsmappe.

Mit dieser change-formel kannst du sicherstellen, dass ein Ereignis ausgelöst wird, wenn der Wert von Zelle A1 sich ändert, egal ob durch eine manuelle Eingabe oder durch eine Formel.


Häufige Fehler und Lösungen

  • Fehler: „Das Makro wird nicht ausgeführt“

    • Stelle sicher, dass die Makros in den Excel-Optionen aktiviert sind.
  • Fehler: „Target ist leer“

    • Beachte, dass Worksheet_Calculate kein Target übergibt. Wenn du auf eine bestimmte Zelle reagieren möchtest, musst du den Code entsprechend anpassen.

Alternative Methoden

Wenn du mit größeren Bereichen arbeiten möchtest oder eine komplexere Logik benötigst, kannst du die change-formel auch auf andere Weise implementieren:

  • Verwende die Worksheet_Change-Ereignisprozedur, um Änderungen zu überwachen. Beachte, dass diese nur für manuelle Eingaben funktioniert.
  • Eine weitere Möglichkeit wäre die Verwendung von Application.OnTime, um regelmäßig nach Änderungen zu suchen.

Praktische Beispiele

Hier sind einige change-formel beispiele, die du ausprobieren kannst:

  1. Einfaches Beispiel für die Überwachung einer bestimmten Zelle:

    Private Sub Worksheet_Calculate()
       If Range("B1").Value <> "" Then
           MsgBox "B1 hat einen neuen Wert!"
       End If
    End Sub
  2. Überwachung eines Bereichs:

    Private Sub Worksheet_Calculate()
       If Application.CountA(Range("A1:A10")) > 0 Then
           MsgBox "Ein Wert in A1:A10 wurde geändert!"
       End If
    End Sub

Tipps für Profis

  • Nutze Application.EnableEvents = False, um zyklische Aufrufe zu vermeiden, wenn du innerhalb deiner Ereignisprozeduren Änderungen vornimmst.
  • Kommentiere deinen Code gut, um die Nachvollziehbarkeit zu erhöhen.
  • Teste deinen Code gründlich, um unerwartete Fehler zu vermeiden.

FAQ: Häufige Fragen

1. Kann ich Worksheet_Calculate auch für mehrere Zellen verwenden? Ja, du kannst den Code anpassen, um mehrere Zellen zu überwachen, indem du Bedingungen für mehrere Adressen einfügst.

2. Gibt es eine Möglichkeit, die Änderung nur einmal auszulösen? Ja, du kannst eine Boolesche Variable verwenden, um sicherzustellen, dass die Nachricht nur einmal pro Änderung angezeigt wird.

3. Funktioniert das auch in Excel Online? Leider sind Makros in Excel Online nicht verfügbar. Diese Lösungen sind nur für die Desktop-Version von Excel geeignet.

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