Herbers Excel-Forum - das Archiv

UDFs zeigen falsche Ergebnisse oder starten nicht


Betrifft: UDFs zeigen falsche Ergebnisse oder starten nicht
von: Barbaraa

Geschrieben am: 16.04.2017 16:28:53

Hallo
habe zwei Probleme mit UDFs (User defined functions). Vielleicht mache ich was falsch oder es ist ein bekanntes Excel-Problem.
Manche UDFs zeigen falsche Ergebnisse oder springen manchmal nicht an.
Leider manche und manchmal, ohne erkennbares Muster.
Zum ersten: Falsches Ergebnis bei folgendem Beispiel
Eine UDF wird durch Änderung in einer Bezugszelle ausgelöst, zB D1:G20 als Bereich.

Function Test(Bereich As Range)
Test = Bereich(2, 1).Value
End Function
Wird die UDF durch eine Änderung in D2 ausgelöst, wird in der UDF "Test" manchmal der alte Wert, also der vor der Änderung übergeben. In D2 steht die einfache Formel:"=A1".
Ich schreibe was Neues in A1, was eine Änderung im Bereich bewirkt und die UDF "Test" auslöst. Offensichtlich wartet diese nicht das Ergebnis der Änderung ab und verarbeitet den alten Zustand.
Aber eben nicht immer, meistens funktioniert sie erwartungsgemäß. Die UDF "Test" selbst ist also richtig.
Was mir noch aufgefallen ist:
Wenn die UDF "Test" in mehreren Zellen steht und sich auf den selben Bereich bezieht "=Test(D1:G20)", bringt eine manchmal das falsche Ergebnis wie oben beschrieben und alle anderen das richtige Ergebnis mit dem neuen Wert.
Zum zweiten: Manche UDFs springen manchmal nicht an.
Auch hier: Leider manche und manchmal, ohne erkennbares Muster.
Jedenfalls: "?Application.Calculation" ergibt -4105 (entspricht xlCalculationAutomatic),
auch die Berechnungsoptionen stehen auf automatisch.
Auch F9, Berechnen, Blatt Berechnen, per Menüsteuerung oder als Makro bringen Excel nicht dazu, diese UDFs zu berechnen.
Sogar das Ändern der Bezugszellen der UDF, was ja der eigentliche Auslöser für die Berechnung ist, lässt Excel unbeeindruckt untätig.
Abhilfe, wenn ich es entdecke:
Erst wenn ich in die entsprechende Zelle hineingehe (mit F2 oder mit der Maus), wird diese eine ausgeführt. Aber nur, wenn ich es zufällig entdecke. Aber dann funktioniert es, zumindest für diese Sitzung.
Kann es sein, dass Excel überlastet ist?
Wie auch immer, das "

Sub worksheet_change" springt ordnungsgemäß an.
Vielleicht kann man da was einbauen?
Jedenfalls "Calculate" hilft nicht.
LG, Barbara

Betrifft: AW: UDFs zeigen falsche Ergebnisse oder starten nicht
von: onur
Geschrieben am: 16.04.2017 17:32:50
Hi Barabaraa,
Hast du ein Beispiel?
Bei mir läuft nämlich alles, ich habe es so realistisch, wie es geht nachgebaut, aber alles läuft, wie es soll.

Betrifft: Application.Volatile in der UDF …
von: RPP63
Geschrieben am: 16.04.2017 19:43:16
… dürfte helfen, Barbara.
Unnötig zu erwähnen, dass man dies nur bei überschaubaren Daten machen sollte?
Gruß Ralf

Betrifft: AW: Application.Volatile in der UDF …
von: Barbaraa
Geschrieben am: 17.04.2017 23:36:12
Leider kann ich kein Beispiel liefern, die Datei ist zu groß, um sie zu anonymisieren und auf das Wesentliche zu kürzen. Noch dazu weiß ich auch nicht, ob da nicht was wirklich Wesentliches verloren günge.
Habe eine Datei erstellt nur mit den kritischen Elementen. Aber da tritt natürlich kein Fehler auf.
In meiner Originaldatei ist es derzeit auch wieder ruhig. Habe einige Umstellungen gemacht, zB Bereiche für bedingte Formatierungen etwas umgebaut und reduziert.
Das Thema scheint nun erledigt, da keine Fehler mehr auftreten. Warum, weiß ich nicht. Ein mulmiges Gefühl.
Hatte nur gehofft, dass jemand hier ähnliche Probleme hatte. Auch die Internet-Recherche verlief ergebnislos, was meine Problemstellung betrifft.
Danke für Eure Antworten.
LG, Barbara

Excel-Beispiele zum Thema "UDFs zeigen falsche Ergebnisse oder starten nicht"
Anzeigen von Werten und Formeln UserForm in Abhängigkeit einer RefEdit-Auswahl anzeigen
Eingangsbildschirm anzeigen Den vorhergehenden Zellwert in einer zweiten Zelle zeigen
Fortlaufende Uhrzeit in Zelle und Statusleiste zeigen Userform in der Entwicklungsumgebung anzeigen
Ein Bild sekundenlang anzeigen lassen Laufwerke im Dialog zur Auswahl anzeigen lassen
Bild für einen Zeitraum von weniger als 1 Sekunde zeigen ComboBox in Abhängigkeit von einer CheckBox anzeigen