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

Forumthread: Makro ausführen, wenn Zellinhalt geändert wird

Makro ausführen, wenn Zellinhalt geändert wird
markus
Guten Abend,
gerade habe ich ein Problem,
ich möchte ein Makro ausführen wenn sich der Wert der Zelle L506 über eine Formel ändert.
Im Normalzustand ist der Wert 0. Wird der Wert größer soll ein Makro ausgeführt werden.
Danke für Eure Hilfe.
Gruß Markus
Anzeige

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

Betreff
Benutzer
Anzeige
AW: Makro ausführen, wenn Zellinhalt geändert wird
11.08.2010 22:15:57
ing.grohn
Hallo Markus,
versuch mal (code in der "Tabelle"):
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("L56")  0 Then
MsgBox "L56 hat sich auf " & Range("L56").Value & " geändert"
End If
End Sub

MfG
Albrecht
_Change
11.08.2010 22:20:11
Uduuh
Hallo Albrecht,
das Ereignis greift nicht bei Änderung eines Formelergebnisses.
wenn sich der Wert der Zelle L506 über eine Formel ändert.

Gruß aus’m Pott
Udo

Anzeige
AW: _Wert über Formel
11.08.2010 22:45:44
ing.grohn
Hallo Udo,
was heisst denn genau
"wenn sich der Wert der Zelle L506 über eine Formel ändert."
wenn ich in L506 schreibe =wenn(L505=100;10;0)
wird das Makro entsprechend ausgeführt!
ist das eine Formel oder nicht.
oder wann ist eine Formel eine Formel?
Eine Anwort wäre nett
Mit freundlichen grüßen
Albrecht
Anzeige
AW: _Wert über Formel
11.08.2010 22:56:08
ing.grohn
Hallo Udo,
habs gemerkt
mFG
Albrecht
AW: Makro ausführen, wenn Zellinhalt geändert wird
11.08.2010 22:18:05
Uduuh
Hallo,
in den Code der Tabelle:
Private Sub Worksheet_Calculate()
If [L506] > 0 Then Makro1
End Sub

Gruß aus’m Pott
Udo

;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Makro ausführen, wenn Zellinhalt geändert wird


Schritt-für-Schritt-Anleitung

Um ein Makro automatisch auszuführen, wenn sich der Wert in einer Zelle ändert, kannst Du den folgenden Code verwenden. Dieser wird in den VBA-Editor eingefügt. Hier ist, wie Du es machst:

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

  2. Doppelklicke im Projektexplorer auf das Arbeitsblatt, in dem Du das Makro ausführen möchtest.

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

    Private Sub Worksheet_Change(ByVal Target As Range)
       If Not Intersect(Target, Me.Range("L506")) Is Nothing Then
           If Me.Range("L506").Value > 0 Then
               ' Hier Dein Makro aufrufen
               Call Makro1
           End If
       End If
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Ändere den Wert in der Zelle L506, um das Makro auszuführen.


Häufige Fehler und Lösungen

  • Makro läuft nicht bei Formelergebnissen: Wenn der Wert in der Zelle L506 durch eine Formel geändert wird, greift das Worksheet_Change-Ereignis nicht. Stattdessen solltest Du das Worksheet_Calculate-Ereignis verwenden:

    Private Sub Worksheet_Calculate()
       If Me.Range("L506").Value > 0 Then
           Call Makro1
       End If
    End Sub
  • Makro wird nicht ausgeführt: Stelle sicher, dass das Makro, das Du aufrufen möchtest, vorhanden ist und keine Syntaxfehler enthält. Überprüfe auch, ob die Makros in Excel aktiviert sind.


Alternative Methoden

Wenn Du eine andere Methode ausprobieren möchtest, um ein Makro auszuführen, wenn sich der Zellinhalt ändert, kannst Du folgende Ansätze verwenden:

  • Verwendung von Application.OnTime: Mit dieser Methode kannst Du das Makro zu bestimmten Zeitpunkten ausführen lassen, was hilfreich sein kann, wenn Du häufige Änderungen in einer Zelle überwachen möchtest.

  • Datenüberprüfung: Du kannst eine Datenüberprüfung in Excel einrichten, die bestimmte Aktionen auslöst, wenn der Wert in einer Zelle geändert wird, jedoch ist dies limitiert und erfordert oft manuelles Eingreifen.


Praktische Beispiele

Hier sind einige Beispiele, wie Du die Makros anpassen kannst:

  1. Benachrichtigung bei Änderung:

    Private Sub Worksheet_Change(ByVal Target As Range)
       If Not Intersect(Target, Me.Range("L506")) Is Nothing Then
           MsgBox "Der Wert in L506 hat sich geändert!"
       End If
    End Sub
  2. Makro ausführen bei bestimmten Bedingungen:

    Private Sub Worksheet_Calculate()
       If Me.Range("L506").Value > 10 Then
           Call Makro2
       End If
    End Sub

Tipps für Profis

  • Verwende Application.EnableEvents: Um zu verhindern, dass das Makro in einer Endlosschleife läuft, kannst Du die Ereignisse vorübergehend deaktivieren:

    Private Sub Worksheet_Change(ByVal Target As Range)
       Application.EnableEvents = False
       ' Dein Code hier
       Application.EnableEvents = True
    End Sub
  • Debugging mit Debug.Print: Wenn Du Schwierigkeiten hast, Deinen Code zu debuggen, kannst Du Debug.Print verwenden, um Werte in das Immediate-Fenster zu drucken. So kannst Du besser nachvollziehen, welche Werte Dein Makro hat.


FAQ: Häufige Fragen

1. Wie kann ich ein Makro ausführen, wenn sich der Wert in einer Zelle ändert? Du kannst das Worksheet_Change-Ereignis oder das Worksheet_Calculate-Ereignis verwenden, je nachdem, ob der Wert direkt eingegeben oder durch eine Formel berechnet wird.

2. Funktioniert das auch in Excel Online? Leider unterstützt Excel Online keine VBA-Makros, sodass diese Funktionen nur in der Desktop-Version von Excel verfügbar sind.

3. Was ist der Unterschied zwischen Worksheet_Change und Worksheet_Calculate? Worksheet_Change wird ausgelöst, wenn eine Zelle manuell geändert wird, während Worksheet_Calculate ausgeführt wird, wenn Excel die Arbeitsmappe neu berechnet, z.B. wenn Formeln aktualisiert werden.

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