Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1548to1552
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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)

    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)
    


    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)
    Anzeige
    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)
    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
    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
    Anzeige
    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)

    321 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige