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

Forumthread: Mit Formel "Wenn..." Makro aufrufen

Mit Formel "Wenn..." Makro aufrufen
23.03.2017 17:48:36
Dieter(Drummer)
Guten Tag VBA-Spezialisten,
im aktiven Tabellenblatt ist in Zelle F18 folgende Formel:
  • =WENN(E5="";"";ZÄHLENWENN(G5:G16;"ü"))

  • Nun soll, wenn der Wert in Zelle F18 "12" ist, mein Makro ausgeführt werden.
    Mit diesem Makro (im Modul),im Tabellenblatt, funktioniert es nicht:
    Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$F$18" = 12 Then
    Call MeinMakro
    End If
    End Sub
    

    Was ist da falsch?
    Mit der Bitte um Hilfe, grüßt
    Dieter(Drummer)
    Anzeige

    9
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Mit Formel "Wenn..." Makro aufrufen
    23.03.2017 17:55:30
    Hajo_Zi
    Hallo Dieter,
    
    Über wenn Makro starten
    Du musst dazu einen Umweg anlegen.
    Die WENN-Funktion lautet z.B.
    =WENN(A1>10;MakroStart();"Nix")
    Die Wenn-Bedingung kann kein Makro starten, aber eine Funktion ausführen. Diese Funktion kann  _
    wiederum ein Makro aufrufen.
    Die Funktion ist so aufgebaut und ruft das abhängige Makro auf:
    Function MakroStart()
    Application.Volatile
    MakroStart_Makro
    End Function
    Sub MakroStart_Makro()
    MsgBox ("TuT")
    End Sub
    von Ramses (Rainer)
    


    Anzeige
    AW: Mit Formel "Wenn..." Makro aufrufen
    23.03.2017 18:00:47
    Dieter(Drummer)
    Danke Hajo,
    dass muss ich langsam umsetzen. Es wird wohl etwas dauern, aber ich gebe Nachricht, ob ich es dann richtig gemacht habe und es klappt.
    Danke erstmal und Gruß, Dieter(Drummer)
    AW: Danke Hajo, klappt prima ...
    23.03.2017 18:21:26
    Dieter(Drummer)
    ... es hat perfekt nach meinen Vorstellungen funktioniert.
    Ich habe in G18 die Formel:
    
    =WENN(F18>11;MakroStart();"")
    

    und im Tabellenblatt die Function:
    Function MakroStart()
    Application.Volatile
    MakroStart_Makro
    End Function
    Sub MakroStart_Makro()
    Call MausLinks
    End Sub
    

    Es klappt perfekt.
    Danke und einen schönen Abend,
    Dieter(Drummer)
    Anzeige
    AW: Mit Formel "Wenn..." Makro aufrufen
    23.03.2017 18:00:31
    Daniel
    Hi
    das Worksheet_Change-Event spricht nur an, wenn die Zellformel ansich geändert wird.
    es spricht nicht an, wenn sich bei gleicher Formel das Formelergebnis durch eine Neuberechnung ändert.
    du müsstest hier also das Calculate-Event verwenden, dieses spricht bei einer Neuberechnung der Formeln im Tabellenblatt an.
    allerdings kannst du nicht ermitteln, welche Zellen bzw Formeln dabei ihren Wert geändert haben.
    die andere Alternative ist, dass du im Change-Event diejenigen Zellen überwachst, die einen Einfluss auf das Formelergebnis von F18 haben, also E5 und G5:G16:
    Sub Worksheet_Change(ByVal Target As Range)
    If not Intersect(Target, Range("E5,G5:G16")) is Nothing then
    If Range("$F$18").value = 12 Then
    Call MeinMakro
    end If
    End If
    End Sub
    
    aber auch das geht nur, wenn in E5 und G5:G16 keine Formeln stehen, sondern Festwerte.
    Gruß Daniel
    Gruß Daniel
    Anzeige
    AW: Danke Daniel ...
    23.03.2017 18:08:44
    Dieter(Drummer)
    Hallo Daniel,
    dann wird wohl dein Hinweis-Makro nicht helfen, da in E5 ein Festwert ist, aber in G5:G16 Formeln stehen.
    Dennoch Danke und
    Gruß, Dieter(Drummer)
    AW: Danke Daniel ...
    23.03.2017 18:11:56
    Daniel
    naja, du kannsst die Zellen, auf die sich die Formeln von G5:G16 beziehen überwachen.
    das Change-Event reagiert immer nur auf eine manuelle Eingabe in die Zelle.
    das Calculate-Event reagiert zwar auf neuberechnung der Formeln, aber du kannst nicht ermitteln, welche Formeln neu berechnet wurden und ob sich der Wert geändert hat.
    Gruß Daniel
    Anzeige
    AW: Danke nochmal Daniel ...
    23.03.2017 18:16:58
    Dieter(Drummer)
    ... mit Hajos Version hat es schon funktioniert.
    Gruß und einen schönen Abend, Dieter(Drummer
    AW: Danke Daniel ...
    23.03.2017 18:21:13
    Daniel
    ggf wäre das eine Möglichkeit:
    im Calculate-Event des Tabellenblatts folgendes:
    Private Sub Worksheet_Calculate()
    Static AltWert As Double
    With Range("F18")
    If .Value  AltWert Then
    AltWert = .Value
    If .Value = 12 Then Call DeinMakro
    End If
    End With
    End Sub
    
    mit dem Altwert überprüfst du, ob sich der Wert von F18 geändert hat.
    damit verhinderst du, dass das Marko ständig wiederholt ausgeführt wird, wenn eine andere Zelle neu berechnet wird, währen F18 gleich bleibt.
    Somit wird das Makro dann nur einmalig ausgeführt, wenn sich der Wert von F18 von einem anderen Wert auf 12 ändert.
    eine Static-Variable behält ihren Wert nach Makroende und ist dann bei einem erneuen Aufruf schon von anfang an befüllt.
    Gruß Daniel
    Anzeige
    AW: Danke Daniel ... ebenfalls perfekt ...
    23.03.2017 18:31:49
    Dieter(Drummer)
    ... eine prima funktioniernde Lösung und ohne Function.
    Danke für diese Lösung.
    Gruß, Dieter(Drummer)
    ;

    Forumthreads zu verwandten Themen

    Anzeige
    Anzeige
    Entdecke relevante Threads

    Schau dir verwandte Threads basierend auf dem aktuellen Thema an

    Alle relevanten Threads mit Inhaltsvorschau entdecken
    Anzeige
    Anzeige

    Infobox / Tutorial

    Makro mit der WENN-Formel in Excel auslösen


    Schritt-für-Schritt-Anleitung

    Um ein Makro mit der WENN-Formel in Excel auszulösen, gehe wie folgt vor:

    1. Formel in Zelle F18 einfügen:

      =WENN(E5="";"";ZÄHLENWENN(G5:G16;"ü"))
    2. Makro im VBA-Editor erstellen:

      • Öffne den VBA-Editor mit ALT + F11.
      • Füge ein neues Modul hinzu und erstelle die folgende Subroutine:
        Sub MeinMakro()
        MsgBox "Das Makro wurde ausgeführt!"
        End Sub
    3. Worksheet-Change-Event einfügen:

      • Im entsprechenden Arbeitsblatt füge das Worksheet_Change-Event hinzu:
        Private Sub Worksheet_Change(ByVal Target As Range)
        If Not Intersect(Target, Range("E5,G5:G16")) Is Nothing Then
           If Range("$F$18").Value = 12 Then
               Call MeinMakro
           End If
        End If
        End Sub
    4. Testen:

      • Ändere die Werte in den Zellen E5 oder G5:G16, um zu sehen, ob das Makro bei einem Wert von 12 in F18 ausgeführt wird.

    Häufige Fehler und Lösungen

    • Fehler: Das Worksheet_Change-Event wird nicht ausgelöst.

      • Lösung: Stelle sicher, dass du die Zellen E5 und G5:G16 korrekt überwacht hast. Wenn in G5:G16 Formeln stehen, kannst du die Zellen, auf die sie sich beziehen, überwachen.
    • Fehler: Das Makro wird mehrmals ausgeführt.

      • Lösung: Verwende das Worksheet_Calculate-Event, um sicherzustellen, dass das Makro nur einmal ausgeführt wird, wenn sich der Wert von F18 ändert.

    Alternative Methoden

    1. Verwendung einer Funktion: Du kannst eine Funktion erstellen, die das Makro aufruft, wenn die Bedingungen erfüllt sind. Beispiel:

      Function MakroStart()
         Application.Volatile
         If Range("$F$18").Value = 12 Then
             Call MeinMakro
         End If
      End Function
    2. Worksheet_Calculate-Event: Eine weitere Methode ist das Worksheet_Calculate-Event zu nutzen:

      Private Sub Worksheet_Calculate()
         Static AltWert As Double
         With Range("F18")
             If .Value <> AltWert Then
                 AltWert = .Value
                 If .Value = 12 Then Call MeinMakro
             End If
         End With
      End Sub

    Praktische Beispiele

    • Beispiel 1: Wenn der Wert in E5 auf einen bestimmten Wert geändert wird, wird das Makro ausgeführt.
    • Beispiel 2: Die Formel in G18 könnte so aussehen:
      =WENN(F18>11;MakroStart();"")

    Tipps für Profis

    • Nutze Application.Volatile, um sicherzustellen, dass deine Funktion bei jeder Neuberechnung von Excel aktualisiert wird.
    • Teste dein Makro gründlich in einer Testumgebung, bevor du es in einer produktiven Datei verwendest.
    • Halte deine Makros einfach und klar strukturiert, um die Wartbarkeit zu erhöhen.

    FAQ: Häufige Fragen

    1. Kann ich auch andere Bedingungen verwenden?
    Ja, du kannst die Bedingungen in der WENN-Formel anpassen, um verschiedene Werte zu überprüfen.

    2. Was passiert, wenn ich eine Zelle mit einer Formel ändere?
    Das Worksheet_Change-Event reagiert nur, wenn die Zellformel selbst geändert wird. Nutze das Calculate-Event für Neuberechnungen.

    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