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

Forumthread: Makro starten durch Zelländerung

Makro starten durch Zelländerung
24.04.2006 13:35:50
Stefan
Hallo zusammen,
ich habe mir ein Formular erstellt (ohne Userform),
indem 10 Textfeldern enthalten sind. Es müssen mind. 6 Textfelder ausgefüllt werden. Jetzt habe ich jedes Feld mit einer Zelle verlinkt, die dann eine 1 enthält, wenn das jeweilige Textfeld beschrieben wird.
Zelle R19 enthält eine Formel zur Summenbildung und soll überwacht werden.
Wenn R19 = 6 ist, soll ein Makro gestartet werden (bekomme ich nicht hin).
Ich habe jetzt diesen Code:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = "$R$19" Then
Call makro
Else: Exit Sub
End If
End Sub

Könnt Ihr mir bitte dabei helfen ?
Es funktioniert, solange ich R19 per Hand geändert wird.
Bei Änderung durch die Formel tut sich gar nichts.
Danke vorab für Eure Mühe.
Gruß Stefan
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Makro starten durch Zelländerung
24.04.2006 14:30:26
Franz
Hallo Stefan,
das Change-Ereignis reagiert nicht auf Wertänderungen in Formeln. Du muß Änderungen der 10 Textfelder überwachen und den Wert von R19 abfragen. Etwa so:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Not Intersect(Target, Range("A2:A11")) Is Nothing Then
If Range("R19").Value >= 6 Then
Call makro
Else
Exit Sub
End If
End If
End Sub

In diesem Beispiel sind die 10 Texteingabefelder im Bereich A2:A11. Falls die 10 Textfelder verstreut in der Tabelle sind, dann kannst du die Target-Adressen über Or in der If-Bedingung prüfen:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = "$A$2" Or Target.Address = "$A$4" Or Target.Address = "$C$2" _
Or Target.Address = "$C$4" Or Target.Address = "$E$2" Or Target.Address = "$E$4" _
Or Target.Address = "$G$2" Or Target.Address = "$G$4" Or Target.Address = "$H$2" _
Or Target.Address = "$H$2" Then
If Range("R19").Value >= 6 Then
MsgBox "Call makro"
Else
Exit Sub
End If
End If
End Sub

Gruß
Franz
Anzeige
AW: Makro starten durch Zelländerung
24.04.2006 15:35:50
Stefan
Hallo Franz,
vielen Dank für Deine Hilfe. So gehts !
Gruß Stefan
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Makro bei Zelländerung ausführen in Excel


Schritt-für-Schritt-Anleitung

Um ein Excel-Makro auszuführen, wenn sich der Wert einer Zelle ändert, kannst Du den Worksheet_Change-Ereignis-Handler in VBA verwenden. Hier ist eine einfache Anleitung:

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

  2. Wähle das entsprechende Arbeitsblatt im Projekt-Explorer aus.

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

    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
       If Not Intersect(Target, Range("A2:A11")) Is Nothing Then
           If Range("R19").Value >= 6 Then
               Call makro
           Else
               Exit Sub
           End If
       End If
    End Sub
  4. Ändere die Zellbereiche (A2:A11) entsprechend Deinen Anforderungen.

  5. Speichere und schließe den VBA-Editor.

Jetzt wird das Makro bei Änderungen in den definierten Textfeldern ausgeführt, solange der Wert in Zelle R19 6 oder mehr beträgt.


Häufige Fehler und Lösungen

  • Makro wird nicht ausgeführt: Achte darauf, dass die Änderungen in den überwachten Zellen tatsächlich den Wert in R19 beeinflussen. Wenn R19 durch eine Formel berechnet wird, funktioniert Worksheet_Change nicht. Verwende stattdessen den Worksheet_Calculate-Ereignis-Handler, um auf Änderungen der Formelergebnisse zu reagieren.

  • Fehlermeldungen: Stelle sicher, dass die Makros in Deinen Excel-Einstellungen aktiviert sind. Gehe zu Datei > Optionen > Trust Center > Einstellungen für das Trust Center > Einstellungen für Makros und aktiviere die erforderlichen Optionen.


Alternative Methoden

Eine alternative Methode, um ein VBA-Makro bei Zelländerung auszuführen, ist die Verwendung des Worksheet_Calculate-Ereignisses. Hier ein Beispiel:

Private Sub Worksheet_Calculate()
    If Range("R19").Value >= 6 Then
        Call makro
    End If
End Sub

Diese Methode überwacht, wenn sich die Berechnungsergebnisse ändern, und führt das Makro entsprechend aus.


Praktische Beispiele

Ein Beispiel für die Verwendung der oben genannten Methoden:

  1. Formular mit 10 Textfeldern: Du hast ein Formular, in dem 10 Textfelder mit den Zellen A2 bis A11 verknüpft sind. Jedes Mal, wenn Du ein Textfeld ausfüllst, erhöht sich der Wert in R19. Wenn dieser Wert 6 erreicht, wird das Makro makro ausgeführt.

  2. Benachrichtigung bei Änderungen: Du kannst auch eine Nachricht anzeigen lassen, wenn das Makro ausgeführt wird:

    MsgBox "Das Makro wurde aufgrund der Änderung ausgeführt."

Tipps für Profis

  • Verwende Application.EnableEvents = False: Um zu verhindern, dass das Makro in einer Endlosschleife ausgeführt wird, wenn eine Zelle geändert wird, setze Application.EnableEvents = False am Anfang des Makros und Application.EnableEvents = True am Ende.

  • Testen von Makros: Teste Deine Makros gründlich, um sicherzustellen, dass sie in allen möglichen Szenarien funktionieren.


FAQ: Häufige Fragen

1. Wie kann ich das Makro nur für bestimmte Zellen ausführen? Du kannst die If Not Intersect(Target, Range("A2:A11")) Is Nothing-Bedingung anpassen, um nur bestimmte Zellen zu überwachen.

2. Was mache ich, wenn das Makro nicht läuft, obwohl es richtig kodiert ist? Überprüfe, ob die Makros in den Excel-Einstellungen aktiviert sind und ob Du den richtigen Bereich für die Überwachung angegeben hast.

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