Anzeige
Archiv - Navigation
608to612
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
608to612
608to612
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Probleme mit UDF und Worksheet Ereignissen

Probleme mit UDF und Worksheet Ereignissen
09.05.2005 16:09:36
Matthias
Hallo Allerseits,
ich habe folgendes Problem:
Kalkulationstool mit einer Unmenge von UDF Funktionen
Dem Kalkulationstabellenblatt (in dem die ganzen UDF's mit den Eingangsparametern bestückt werden können) musste ich ein Activate und ein SelectionChange Ereigniss zuordnen. Diese Ereignisse ändern keinen Eingangsparameter der UDF's (es werden Spalten/Zeilen ein-/ausgeblendet)
Aber trotzdem "springen" einige der UDF's an und andere wiederum nicht.
Und seit wir Excel 2003 verwenden nimmt dies enorm Rechenzeit in Anspruch
Bedeutet: bei einer leeren Kalkulation (also keine Eingangsparameter für die UDF's eingetragen) können schon mal 2 Minuten vergehen, bis das Worksheet-Ereigniss durchgelaufen ist.
Was kann der Ursprung dieses Verhaltens sein ?
Wäre sehr nett wenn Ihr mir helfen könntet.
Viele Grüße
Matthias

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Probleme mit UDF und Worksheet Ereignissen
09.05.2005 16:16:04
Herbert
Hi, du verwendest vermutlich Application.Volatile, dadurch werden immer alle UDF
neu berechnet.
mfg Herbert
AW: Probleme mit UDF und Worksheet Ereignissen
09.05.2005 18:02:24
Matthias
Hallo Herbert,
vielen Dank für Deine Antwort, aber .....leider nein, ich verwende nicht Application.Volatile
Mein beschriebens Problem lässt sich leider auch nicht in einer "kleinen" Testmappe darstellen, da dann die UDF's so funktionieren wie sie sollen.
Ich habe aber mittlerweile best. 50 Funktionen (mit teilw. bis zu 25 Eingangsparametern je UDF)
Weiß noch jemand Rat ?
Gruß Matthias
AW: Probleme mit UDF und Worksheet Ereignissen
09.05.2005 19:15:02
Holger
Wenn die Anzahl der durch die UDF neuberechneten Zellen sehr groß ist, dauerts eben,
da UDF bekanntlich bedeutend langsamer sind als Excelfunktionen.
Berechnung auf manuell stellen.
mfg Holger
Anzeige
AW: Probleme mit UDF und Worksheet Ereignissen
09.05.2005 19:51:03
Matthias
Hallo Holger,
auch Dir vielen Dank für die Antwort, aber bringt mich leider auch nicht weiter, denn:
1.) ich schalte bereits bei allen Makros (zumindest wo es Sinn macht) die Berechnung zu Begin auf xlmanuell und am ende wieder auf xlAutomatic.
2.) unter Excel 2002 läuft das (gleiche/selbe) Programm erheblich schneller !
ich bin echt am verzweifeln, hat noch jemand eine Idee ?
Danke
Matthias
AW: Probleme mit UDF und Worksheet Ereignissen
09.05.2005 22:26:55
Rudi
Löst du irgendwo das Calculate-Ereignis per Code aus? Wenn die Berechnung auf manuell
eingestellt ist, ist das Verhalten eigentlich nicht reproduzierbar.
mfg Rudi
AW: Probleme mit UDF und Worksheet Ereignissen
09.05.2005 22:47:11
Matthias
Hallo Rudi,
was meinst Du damit ?
wenn ich Makros ausführe die Rechenleistung benötigen schalte ich die Berechnung am Anfang des Makros aus
ThisWorkbook.Application.Calculation = xlManual
und am Ende der Prozedur wieder an
ThisWorkbook.Application.Calculation = xlAutomatic
Dies verhindert wenigstens beim Ablauf des Makros das die UDF's anspringen.
Ich teste seit heute morgen auf einem Ecxel 2003 System und bin mittlerweile soweit das ich eine Ursache herausfinden konnte (obwohl ich sie nicht verstehe):
In einem Tabellenblatt habe ich der Übersichtlichkeit wegen einen Haufen Zeilengruppierungen (man sieht nur die Überschriften und kann dann die relevanten Inhalte "aufklicken"). Diese Gruppierung zu deaktivieren bzw aktivieren (egal ob von Hand oder über VBA) war in Excel 2002 eine Sache von Sekunden, nun ist es eine Sache von Minuten !!!
Und nochmal, ich habe diese Probleme nur unter Excel 2003 und nicht unter Excel 2002.
Hat vielleicht noch jemand eine Idee ?
gruß
matthias
Anzeige
AW: Probleme mit UDF und Worksheet Ereignissen
09.05.2005 23:59:52
Bert
"Inhalte "aufklicken"" ist etwas schwer verständlich, versuch dich mal an die üblichen
Bezeichnungen zu halten, das kann man bei deinem Level wohl erwarten.
Vielleicht hilft es, Application.EnableEvents am Anfang des Codes auf false zu setzen.
Am Schluss wieder auf True setzen nicht vergessen.
mfg Bert
AW: Probleme mit UDF und Worksheet Ereignissen
10.05.2005 01:01:43
matthias
Tja Bert,
aber dafür war es auch in " " ... und ehrlich gesagt ist mir nach 16 Stunden grübeln und testen der Sinn nach Feinheiten verloren gegangen ... :-)
Wenn ich ein Ereigniss unterdrücken will, dann jenes was die UDF's trotz keiner Änderung der Eingangsparamater zum kalkulieren anstößt (sollte es nicht geben ist aber so, weil jede aktivierte / deaktivierte Gruppierung stößt die Funkionen an, obwohl das Tabellenblatt mit den Gruppierungen nichts mit den UDF's zu tun hat)
Ich denke mal das ich das Problem falsch angehe ....
Wenn eine Function einen Eingangsparameter liefert für z.B. 2 weitere Functions dann ist logisch das wenn die 1. Function angestossen wird die anderen ebenfalls folgen.
Also ist es wichtig zu ermitteln welche Function die erste ist (Haltepunkte im VBE gesetzt), aber wie bekomme ich heraus warum diese erste Function angestossen wurde ?
aber jetzt ist der Ofen bei mir erstmal aus ....
gruß
matthias
Anzeige
AW: Probleme mit UDF und Worksheet Ereignissen
10.05.2005 12:32:42
Bert
Hi,
wenn Calculation auf manuell eingestellt ist und die Events ausgeschaltet sind,
kann bei intakter Excelinstallation keine UDF laufen.
mfg Bert
AW: Probleme mit UDF und Worksheet Ereignissen
10.05.2005 15:43:22
Matthias
Hallo Bert,
Deine Aussage ist richtig (und sie funktioniert natürlich auch), aber es macht für mein Tool wenig Sinn vor jedem Ereignis / Aktion die calculation auf xlmanuell zu setzten.
(verwende diese Methode bereits schon da wo es Sinn macht)
Ich habe mir jetzt damit geholfen das ich die Abbruchkriterien der jeweiligen UDF innerhalb einer Formel voranstelle
Bsp: =Wenn(A19="";"";Router_monatlich(A19;B19;....))
Die Performance ist nicht mehr ganz so schlecht und die UDF's springen auch nur noch an wenn es nötig wird.
Vielen Dank an alle Antwortenden.
gruß
Matthias
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige