ich habe gerade folgendes Problem:
Ich habe mir Excel-extern eine DLL zusammengebaut. In Excel gibt es dann eine UDF, die eine Klasse aus der DLL instanziert und bestimmte Berechnungen auf Grundlage der DLL durchführt. Die UDF erwartet die Eingabe von z.B. 2 Parametern. Beispiel =MeineUDF(2021;48). Soweit so gut.
Der zweite Parameter (also im Beispiel die 48) lässt nur bestimmte Werte zu. Wird ein unzulässiger Wert eingegeben (4 ist z.B. unzulässig), wird über die DLL eine MessageBox angezeigt, dass der Wert unzulässig ist. Auch so weit so gut....
Starte ich jetzt den FunktionWizard über "Funktionen" - "Funktion einfügen" und gebe dann im Eingabefeld für den zweiten Parameter 48 ein, kommt nach der Eingabe der ersten Zahl die Fehlermeldung (weil 4 ja unzulässig ist), ich klicke dann die Fehlermeldung weg und kann noch die 8 eingeben. Dann bin ich wieder bei 48 und die Zahl ist zulässig. Im FunctionWizard auf OK geklickt und das Ergebnis steht wie gewünscht in der Zelle. Alles gut.
Jetzt habe ich mir ein eigenes Ribbon gebaut und starte über einen Button den FunctionWizard. Damit meine UDF "MeineUDF" gleich angezeigt wird, befülle ich die Zelle zunächst mit der Formel ActiveCell.Formula="MeineUDF()" und dann kommt Application.Dialogs.Item(xlDialogFuctionWizard).Show
Funktioniert soweit wie zuvor, nur wenn ich ok klicke und der FunctionWizard sich wieder schließt, steht in der Zelle #Wert, obwohl in der Formelleiste oben das richtige drin steht und die Parameter korrekt übernommen wurden. Drücke ich jetzt nochmal F2 und Enter (Zelle aktualisieren), ist auch das Ergebnis korrekt.
Wie kann ich das lösen, dass gleich das richtige Ergebnis angezeigt wird. #Wert scheint noch der Rückgabewert aus der zuvor eingetragenen UDF ohne Parameter zu sien.
Versucht habe ich bereits ActiveCell.Calculate
Vielen Dank