Ich habe ein Automatisierungs-Addin in C# .NET erstellt und habe eine Shim-DLL dafür. Die Shim-DLL enthält alle benutzerdefinierten Methoden, die die entsprechenden Methoden in der .NET-Assembly aufruft.Benutzerdefinierte Funktionen in der Automatisierung Addin verhalten sich anders Excel 2007
Das Problem, das ich ist bin vor Excel 2007 im Zusammenhang
In Excel 2003, 1. Fügen Sie eine neue Form zu einem Arbeitsblatt 2. Legen Sie >> Funktion >> SUM. Die Funktionsargumente Dialog kommt 3. Klicken Sie auf die neu eingefügten Form anstelle einer Zelle Hinweis: Es geschieht nichts, und kein Zellwert wird automatisch im Argument Feld
Jetzt in Excel 2007, 1. Legen Sie trat ein neue Form 2. Formeln Ribbon Tab >> Einfügen Funktion >> SUM. Funktionsargumente Dialog kommt 3. Klicken Sie auf die neu eingefügten Form Beachten Sie, dass nun ein Fehlerdialog angezeigt wird, sagen: „Die Formel, die Sie getippt enthält einen Fehler“
Dieser Dialog kommt für eine vordefinierte Funktion (SUM). Wenn ich meine -Funktion aus der Liste anstelle von SUMME auswähle, wird der Fehlerdialog nicht angezeigt und der Funktionsargument-Dialog verschwindet einfach. Die Zelle zeigt dann einen Fehler Smarttag.
Gibt es etwas, das für jede Funktion in die SHIM-DLL eingefügt werden muss? Wie ein Attribut oder etwas, das diesen Fehlerdialog anzeigt. ODER vielleicht einige spezielle Wert, der von der Methode zurückgegeben wird, um zu sagen, dass das Argument einen Fehler generiert hat.
Die Funktion in dem COM-Shim definiert ist wie:
STDMETHOD(GetArea)(MyExcelAddIn::Range *r, double *pRetVal)
{
return m_pMyUDF->GetArea(r, pRetVal);
}
Ich rate, dass Ihre Funktion Objekt als Argument als gegen einen bestimmten Typ wie Range nimmt. Ist das der Fall? – shahkalpesh
So werden die Methoden deklariert. Diese Methode gibt "TRUE" oder "FALSE" zurück, basierend darauf, ob die ausgewählte Zelle gültig ist. STDMETHOD (IsValid) (MyAddIn :: Bereich * r, BSTR * pRetVal) { Rückgabe m_pMyExcelUDF-> IsValid (r, pRetVal); } Gibt es irgendwelche Attribute für UDF-Methoden – A9S6