Supportnet / Forum / Tabellenkalkulation
Excel VBA Makro aus starten
Frage
Hallo Excel Experten,
Ich starte Excel VBA Makros immer mittels Tastenkombination oder Schaltfläche.
Nun meine Frage:
Wie ist die richtige Schreibweise, wenn ich stattdessen ein existierendes Makro z.B. mit dem Namen Makro5 durch eine WENN- Bedingung starten möchte ?
Wenn also z.B. im Feld C3 folgende Formel stünde:
WENN((A2)>55;Makro5;"")
Damit soll erreicht werden, daß wenn die Zahl in Feld A2 den Wert 55 überschreitet, Makro5 gestartet wird.
Leider bekomme ich immer eine Fehlermeldung....
Antwort 1 von nighty
hi olli :)
wie gewuenscht :)
gruss nighty
einzufuegen alt f11(vbeditor)/projektexplorer/DeineTabelle
zelle a3 wird geprueft und gegebenenfalls bei wertveraenderung das makro01 gestartet
einzufuegen alt f11(vbeditor)/einfuegen/modul
wie gewuenscht :)
gruss nighty
einzufuegen alt f11(vbeditor)/projektexplorer/DeineTabelle
zelle a3 wird geprueft und gegebenenfalls bei wertveraenderung das makro01 gestartet
Private Sub Worksheet_Calculate()
Application.EnableEvents = False
If fest <> Range("A3") Then
fest = Range("A3")
makro01
End If
Application.EnableEvents = True
End Subeinzufuegen alt f11(vbeditor)/einfuegen/modul
Sub makro02()
Public fest As Variant
End SubAntwort 2 von OLLI-P
Hallo nighty,
Danke für den Tip, aber was soll Sub makro02() ??
Und die Zeile <Public fest As Variant> bringt leider eine Fehlermeldung.
Außerdem suche ich eine Möglichkeit eine Zelle permanent (z.B. alle 5 Sekunden) zu überwachen.
Dein Programm muß ich jedoch immer wieder neu aufrufen, denn es läuft ja nur einmal ab.
Mit
Application.OnTime Now + TimeValue("00:00:05"), procedure:="Makro01"
habe ich leider auch das Problem, daß Makro01 nicht automatisch alle 5 Sekunden startet, ohne daß ich irgend eine Eingabe machen muß.
Trotzdem vielen Dank für den Hinweis auf
Application.EnableEvents .
Danke für den Tip, aber was soll Sub makro02() ??
Und die Zeile <Public fest As Variant> bringt leider eine Fehlermeldung.
Außerdem suche ich eine Möglichkeit eine Zelle permanent (z.B. alle 5 Sekunden) zu überwachen.
Dein Programm muß ich jedoch immer wieder neu aufrufen, denn es läuft ja nur einmal ab.
Mit
Application.OnTime Now + TimeValue("00:00:05"), procedure:="Makro01"
habe ich leider auch das Problem, daß Makro01 nicht automatisch alle 5 Sekunden startet, ohne daß ich irgend eine Eingabe machen muß.
Trotzdem vielen Dank für den Hinweis auf
Application.EnableEvents .
Antwort 3 von nighty
hi olli :)
makro02 ist eine definierung einer globalen variablen,in dieser wird der wert von a3 festgehalten,wobei eine formel sich in a3 natuerlich befinden muss,aendert sich nun der wert der formel in a3 ,erfasst durch das calculate ereignis so wird das makro01 gestartet was du natuerlich erstellen musst,wenn der typ variant falsch ist musst du natuerlich den beduefnissen anpassen,zudem nichts gestartet werden muss da es ja das calculate ereignis schon macht,du musst es natuerlich auch einfuegen wie beschrieben ist dann geht alles vollautomatisch,es gibt eigentlich nichts was da zu starten waere.
gruss nighty
makro02 ist eine definierung einer globalen variablen,in dieser wird der wert von a3 festgehalten,wobei eine formel sich in a3 natuerlich befinden muss,aendert sich nun der wert der formel in a3 ,erfasst durch das calculate ereignis so wird das makro01 gestartet was du natuerlich erstellen musst,wenn der typ variant falsch ist musst du natuerlich den beduefnissen anpassen,zudem nichts gestartet werden muss da es ja das calculate ereignis schon macht,du musst es natuerlich auch einfuegen wie beschrieben ist dann geht alles vollautomatisch,es gibt eigentlich nichts was da zu starten waere.
gruss nighty
Antwort 4 von nighty
hi olli :)
dies ist auch kein tip gewesen sondern eine 100% kommplettloesung anhand deiner fragestellung erstellt.
gruss nighty
dies ist auch kein tip gewesen sondern eine 100% kommplettloesung anhand deiner fragestellung erstellt.
gruss nighty
Antwort 5 von Nepumuk
Hallo Olli,
durch Formeln kannst du nur Funktionen starten, keine Subroutinen. Außerdem unterliegen sie gewissen einschränkungen. Du kannst z.B. keine Zellwerte anderer Zellen ändern, die Find-Methode schlägt (bis Excel2003) fehl und einiges andere mehr.
Um eine Funktion aufzurufen benötigst du folgende Syntax:
=WENN(A2>55;makro5();"")
Gruß
Nepumuk
durch Formeln kannst du nur Funktionen starten, keine Subroutinen. Außerdem unterliegen sie gewissen einschränkungen. Du kannst z.B. keine Zellwerte anderer Zellen ändern, die Find-Methode schlägt (bis Excel2003) fehl und einiges andere mehr.
Um eine Funktion aufzurufen benötigst du folgende Syntax:
=WENN(A2>55;makro5();"")
Gruß
Nepumuk

