Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1188to1192
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

Makro mit "wenn Funktion" starten

Makro mit "wenn Funktion" starten
hans
Hallo,
kann mir jemand sagen was an folgenden "Test" falsch ist.
Oder ist so etwas grundsätzlich nicht möglich.?
Danke und sorry (sollte es eine zu primitive Frage sein)
=WENN(A1=1;Test1())

Function Test1()
Application.Volatile
Testlauf
End Function

Sub Testlauf()
Call Makro1
End Sub

Sub Makro1()
Range("A8:b10").Select
Selection.Interior.ColorIndex = 3
End Sub


AW: Makro mit "wenn Funktion" starten
27.11.2010 14:45:48
Luschi
Hallo Hans,
diese Art des Funktionsaufrufes hat in Excel noch nie funktioniert.
Man kann die Vba-Funktion Test1() in einer Excel-Formel zwar verwenden; aber diese Funktion kann und darf nur einen Rückgabewert für die Zelle liefern, in der die Funktion auch aufgerufen wurde.
Sobald diese Funktion anderen Zellen in der Arbeitsmappe verändern will (und sei es nur 1 Formatänderung), kommt als Rückgabewert '#WERT!'. Das ist auch in Excel 2010 noch so - Leider!
Man kann also in der Makrofunktion andere Zellen zur Ermittlung eines Ergebniswertes heranziehen, aber Wert- bzw. Formatänderungen dieser Zellen sind nicht möglich.
Gruß von Luschi
aus klein-Paris
Anzeige
Wenn du nur etwas darüber nachdenkst,...
27.11.2010 14:58:00
Luc:-?
…Luschi,
warum das wohl so ist, wirst du bemerken, wie überflüssig dein „leider“ eigentl ist… ;->
Stell dir doch mal ein TabBlatt voll Fmln mit solchen Fktt im Automatikbetrieb vor… ;-)
Gruß + schö1Adv,
Luc :-?
PS: Aber, wenn man unbedingt will, schafft man das doch (s.mein Beitrag)…! ;-)
Ganz einfach, pgmtechn nichts, aber trotzdem...
27.11.2010 14:52:12
Luc:-?
…ein Regelverstoß, Hans,
den irgendwann nahezu jeder begeht, der vom Makrorecorder und den Subroutinen her kommt und anfängt udFktt zu schreiben… ;->
Einer Fkt im TabBlatt ist so manches verboten, was eine Subroutine darf — i.W. liefern Fktt nur einen Wert, sie dürfen idR keine anderen Zellen beeinflussen, Objekte händeln, Zellformate einstellen u.ä. Ein paar winzige Ausnahmen gibt's wie z.B. MsgBox u.Objekterzeugung, aber Formatierung ist immer tabu. Mit einer udFkt kann man so etwas höchstens anstoßen, die eigentl Arbeit muss dann eine physisch von der udFkt entkoppelte Subroutine leisten, bspw eine Ereignisprozedur, was bei dir nicht der Fall ist. Durch Call wird deine Subroutine quasi zu einem externen Bestandteil der udFkt. Recherchiere mal nach den hervorgehobenen Begriffen im Archiv, das haben wir hier nicht das 1.Mal… ;-)
Gruß + schö1Adv,
Luc :-?
Anzeige
AW: Ganz einfach, pgmtechn nichts, aber trotzdem...
27.11.2010 15:45:20
hans
Danke für die raschen Antworten !
mein primäres Ziel wäre eigentlich nur gewesen, mit einer Wenn Funktion ein Makro anzusteuern.
Ok -> was nicht ist-> ist eben nicht > Wünsche Frohen 1 Advent


vielleicht so ? Gruß
27.11.2010 16:02:56
robert
Ü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 RamsesCH (Rainer)
Anzeige
AW: vielleicht so ? Gruß
27.11.2010 16:13:36
hans
Ok, das funktioniert -> mit MsgBox -> wenn das Makro aber etwas anderes ausführen soll, _ klappt es nicht.


Du solltest eigentl gemerkt haben, dass...
27.11.2010 17:24:40
Luc:-?
…das im Prinzip dasselbe ist wie deins, Hans,
und MsgBox hatte ich auch ausdrücklich erwähnt!
Du brauchst keine neue Fkt zu erfinden, du benötigst eine Ereignisprozedur, bspw Worksheet_Change! In der musst du das Target abfragen, ob es mit der/n Zelle/n identisch ist, die in der WENN-Fml die Veränderung auslösen sollten. Ist das der Fall und stimmt es (sein Wert) mit der Bedingung überein, rufst du die Subroutine auf.
Wenn du unbedingt (pro forma!) dazu eine Fml benutzen willst, muss deren Ergebnis sich natürl ändern, wenn sich die Bedingungen ändern. Ist das der Fall wird zumindest nach Abschluss der Berechnungen das Worksheet_Calculate-Ereignis ausgelöst. Das hat aber naturgemäß kein spezielles Target. Bei anderweitigen Änderungen (nur der Daten!) wird auch …_Change ausgelöst. Hier könntest du dann fragen, ob Target genau diese Fml enthält. Wenn ja, rufst du die Formatierungssubroutine auf. Das ist mit physischer Entkopplung gemeint und der einzig gangbare „Umweg“.
Alles, was ggf sonst noch möglich wäre, dürfte den Rahmen des „reinen VBA“ verlassen und damit nicht immer und überall lauffähig sein…
Gruß Luc :-?
Anzeige
Du kannst wohl nicht lesen, Robert,...
27.11.2010 16:47:51
Luc:-?
…genau das hat er doch versucht…!
Außerdem hatte ich bereits die richtigen Stichworte geliefert; eine schlechtere und noch dazu falsche Antwort hättest du dir und uns ersparen sollen! Richtig ist einzig und allein das Wort Umweg, aber das hatte ich bereits gesagt, nur du offensichtl nicht verstanden! :-<
Luc :-?
...und dich dann noch hinter Ramses' Namen...
27.11.2010 17:03:23
Luc:-?
…unter einem aus dem Zusammenhang gerissenen Trivialcode (als wäre dieser Code das Maß aller Dinge!) zu verstecken — eigentl Grund genug für eine (gebührenpflichtige) Abmahnung, falls statt Ramses ich betroffen wäre… :->
Na, dann trotzdem schErstAd,
Luc :-?
Anzeige
..ich verstecke mich nicht, ich
27.11.2010 17:24:54
robert
Hi Luc,
Zitat: mein primäres Ziel wäre eigentlich nur gewesen, mit einer Wenn Funktion ein Makro
anzusteuern.

könnte dir die originaldatei schicken mit dem vermerk, dass der
autor Ramses ist.
verteh nicht, was dich so erregt :-)
ausserdem funktioniert es doch-oder?
gruß
robert
Mann, so ignorant kann man doch gar nicht...
27.11.2010 17:44:27
Luc:-?
…sein, Robert;
es ging doch um Formatierung und dazu war eigentl schon alles gesagt, auch das mit der MsgBox. Dein Beitrag war also mitnichten hilfreich und entsprach damit nicht den Forumsregeln…!
Was mich ärgert ist die Ignoranz!
Luc :-?
Anzeige
na dann viel spass dabei, hast du
27.11.2010 18:12:34
robert
noch nie in deinem leben etwas falsch gemacht, oder
sogar einen blödsinn verzapft?
dann hast du was versäumt !
wo steht denn, dass wenn du etwas gesagt hast, dass schon alles gesagt ist ?
und hör endlich damit auf, dich als rächer der nation aufzuspielen,
du bist nicht der mittelpunkt der welt !
einen vorschlag noch-
gründe ein eigenes forum, wo nur typen wie du
agieren dürfen.....
und ENDE
...Nirgends, aber du hast nicht mehr...
27.11.2010 21:41:34
Luc:-?
…oder Zusätzliches (wie hier bspw Tino), sondern weniger und sogar Falsches gesagt, Robert,
so dass bei mir der Eindruck einer Wortmeldung nach dem Prinzip Herr Lehrer, ich weiß auch was! entstand… Und so etwas ist nun mal schlicht überflüssig, mitunter sogar irreführend und damit kontraproduktiv! Einsicht hattest du in deiner vorheri­gen Antwort auch nicht gezeigt!
Fehler kann/darf man machen, man muss sie aber auch zugeben können und nicht stattdessen die beleidigte Leberwurst spielen…
Yours not amused Luc :-?
PS: Nebenbei: In diesem Forum bin ich wohl schon etwas länger als du unterwegs… :->
Anzeige
mit Timer
27.11.2010 17:35:58
Tino
Hallo,
wenn es über eine Formel sein muss, könnte man es mit einem Timer machen,
sonst würde ich es über die Eventfunktion Worksheet_Change angehen.
Hier ein Beispiel mit einem Timer, in A1 0 oder 1 eingeben.
https://www.herber.de/bbs/user/72493.xls
Gruß Tino
Interessant, wenn's passt (mit Timer)! Eine...
27.11.2010 17:50:10
Luc:-?
…andere Methode der physischen Entkopplung, Tino… ;-)
Ansonsten hattest du ja wohl dieselbe Idee wie ich…
Gruß + schörstAd,
Luc :-?
was besseres ist mir dazu nicht eingefallen. ...
27.11.2010 18:13:40
Tino
Hallo,
wünsche auch einen schönen 1. Advent (ist es schon wieder soweit?)
Gruß Tino
Ja, ja, "die Zeit, die rennt im Sauseschritt...
27.11.2010 21:27:17
Luc:-?
…und wir, wir rennen mit!", Tino,
Kommt dir sicher irgendwie bekannt vor…
Was besseres (als dieses Zitat) ist mir dazu (auch) nicht eingefallen
Gruß Luc :-?
Anzeige
AW: mit Timer
28.11.2010 10:30:02
hans
Hallo Tino,
Danke -> das ist es -> so funktioniert es.
Ps.: Auch Dank an die anderen beiden. Aber Leute > gerade zur Weihnachtszeit wollen wir doch nicht in Streit geraten. Ihr habt doch beide versucht mir zu helfen und das ist doch das einzige was zählt.
"Der Weg ist das Ziel"
Und so wichtig ist mir das Ganze ja nun wirklich nicht.
Nun vertragen wir uns wieder und wünschen uns eine besinnliche Weihnachtszeit.
In diesem Sinne
liebe Grüße
Hans


338 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige