|
Falls es noch von Interesse ist:
Wenn in einer UDF ein Fehler auftritt, wird diese vorzeitig beendet und der Befehl mit der Rückgabe an den Formelnamen wird nicht mehr ausgeführt.
Das Problem hier ist die Variable ausstehendeAktien. Diese holst du dir über Cells(zeile, "G").Value wobei zeile die ActiveCell.Row ist. ActiveCell ist aber immer die aktiveZelle. Die wechselt. Wenn du den Wert für diskontsatz im Tabellenblatt änderst und Enter drückst, ist ActiveCell meistens eine Zeile drunter (je nach Einstellung in den Excel-Optionen). In dieser Zeile hast du in Spalte G aber sicher keinen Wert stehen. Wodurch ausstehendeAktien = 0 ist. Bei der Zuweisung zurück an den UDF-Namen teilst du durch ausstehendeAktien. Eine Teilung durch 0 ist aber mathematisch nicht definiert wodurch es zum Fehler kommt. Da die Teilung erfolgt, bevor der Wert zurückgegeben wird, erhälst du den Standardwert bei Codefehlern: #WERT!
Durch Übergabe eines Wertes <>0 in den Formelparametern hast du das Problem selbst gelöst.
Gruß Mr. K.
|