Bekannte Probleme in Excel XLL-Entwicklung
Gilt für: Excel 2013 | Office 2013 | Visual Studio
In diesem Thema werden bekannte Probleme in Microsoft Excel beschrieben, die bei der XLL-Entwicklung auftreten können.
Aufheben der Registrierung von XLL-Befehlen und -Funktionen
Wenn eine XLL eine Funktion oder einen Befehl registriert, erstellt Excel einen neuen Namen für die Ressource und ordnet diesem Namen einen Verweis auf die DLL-Funktion zu. Der Name stammt aus dem vierten Argument pxFunctionText der xlfRegister-Funktion . Dieser Name ist in den normalen Dialogfeldern zum Verwalten von Arbeitsblattnamen ausgeblendet. Um die Registrierung einer Funktion oder eines Befehls aufzuheben, müssen Sie den Namen mithilfe der xlfSetName-Funktion löschen und dabei den Namen übergeben, aber keine Definition übergeben. Ein Fehler verhindert jedoch, dass dadurch der Name aus den Listen des Funktions-Assistenten entfernt wird.
Kürzung von Argumentbeschreibungszeichenfolgen im Funktions-Assistenten
Der pxArgumentHelp1-Parameter und alle nachfolgenden Parameter der xlfRegister-Funktion sind optionale Zeichenfolgen, die den Argumenten der XLL-Funktion entsprechen. Der Funktions-Assistent zeigt diese an, um Hilfe im Dialogfeld "Argumenterstellung" bereitzustellen. Manchmal schneidet Excel die Zeichenfolge, die dem letzten Argument entspricht, um ein oder zwei Zeichen ab, wenn es im Dialogfeld angezeigt wird. Sie können dies vermeiden, indem Sie eine zusätzliche "leere Zeichenfolge" als letzten "argument help"-Parameter Ihrer Funktionsregistrierung hinzufügen.
Einschränkung des Binären Namensbereichs
Binäre Namen und ihre Daten können nur abgerufen werden, wenn das Arbeitsblatt, das zum Zeitpunkt der Erstellung aktiv war, wieder aktiv ist. Da Arbeitsblattfunktionen Arbeitsblätter innerhalb einer Arbeitsmappe nicht aktivieren können (nur Befehle können dies tun), sind Anwendungen mit binären Namen sehr eingeschränkt. Wenn Sie beispielsweise über einen Befehl verfügen, der nur von einem bestimmten Arbeitsblatt aufgerufen wird, können Sie einen binären Namen verwenden, um befehlsbezogene Daten zu speichern.
xlSet und Arbeitsmappen mit Arrayformeln
In Excel 2003 und früheren Versionen schlägt die xlSet-Funktion fehl, wenn Sie versuchen, einem Bereich auf einem Arbeitsblatt, das nicht das aktive Arbeitsblatt ist, Werte zuzuweisen, wobei der entsprechende Bereich auf dem aktiven Blatt eine Arrayformel enthält. In diesem Fall zeigt Excel die Meldung "Sie können einen Teil eines Arrays nicht ändern" an. Dies wurde in Excel 2007 behoben.
Zirkelverweise werden in Datentabellen toleriert
Excel löst derzeit keinen Fehler aus, wenn die Berechnung, auf der eine Datentabelle basiert, auf etwas in der Tabelle selbst verweist. So unwahrscheinlich dieses Szenario ist, sollten Sie beim Erstellen oder Ändern von Formeln, die zum Berechnen von Datentabellenwerten verwendet werden, vorsichtig sein.
Konvertieren einer ganzzahligen XLOPER12 in eine XLOPER
Da der Ganzzahltyp xltypeInt eine 32-Bit-Ganzzahl mit Vorzeichen im XLOPER12 Datentyp ist, es sich aber nur um eine 16-Bit-Ganzzahl im XLOPER-Datentyp handelt, ist es möglich, dass einige ganzzahlige XLOPER12-Werte nicht in einer xlOPER-Ganzzahl enthalten sein können. Wenn Excel diesen Typ intern konvertiert, wird dieses Problem umgehen, indem der Typ in einen Gleitkommatyp xltypeNumXLOPER konvertiert wird.
Die Framework-Funktion XLOper12ToXLOper spiegelt dieses Verhalten wieder, um intern mit Excel konsistent zu sein. Wenn Sie diese Funktion aufrufen, sollten Sie nicht davon ausgehen, dass die zurückgegebene XLOPER immer xltypeInt ist. beim Lesen my_xloper.val.w wird ein false-Wert zurückgegeben, wenn der my_xloper Typ xltypeNum ist.
Zurückgeben von XLOPER oder XLOPER12 durch Ändern von Argumenten an Ort und Stelle
Excel ermöglicht die Registrierung von Funktionen, die eine XLOPER - oder XLOPER12 zurückgeben, indem ein Argument direkt geändert wird. Wenn jedoch ein XLOPER-XLOPER12/ Argument auf den Arbeitsspeicher verweist und der Zeiger dann durch den Rückgabewert der DLL-Funktion überschrieben wird, kann Excel arbeitsspeicherverlusten. Excel zeigt keinen Fehler an, stürzt aber möglicherweise ab. Wenn die DLL Arbeitsspeicher für den Rückgabewert zugewiesen hat, versucht Excel möglicherweise, diesen Speicher freizugeben, was zu einem sofortigen Anwendungsabsturz führen kann. Daher sollten Sie XLOPER/ nichtXLOPER12 Argumente ändern. Alle XLOPER- oder XLOPER12-Argumente sollten als schreibgeschützt behandelt werden.
Weitere Informationen finden Sie unter Speicherverwaltung in Excel.
Siehe auch
XLOper12ToXLOperDeveloping Excel XLLs
Excel XLL SDK – API-Funktionsreferenz
Speicherverwaltung in Excel