Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Synchrone benutzerdefinierte Funktionen ermöglichen die gleichzeitige Ausführung der Auswertungs- und bedingten Formatprozesse in Excel mit der benutzerdefinierten Funktion. Aktivieren Sie synchrone Unterstützung, wenn Ihre benutzerdefinierte Funktion zusammen mit einem der in diesem Artikel aufgeführten Excel-Prozesse ausgeführt werden muss. Benutzerdefinierte Funktionen, die synchrone Vorgänge nicht unterstützen, geben einen Fehler wie #CALC! oder #VALUE! zurück, wenn sie gleichzeitig mit diesen Excel-Prozessen ausgeführt werden.
Warnung
Synchrone benutzerdefinierte Funktionen unterstützen keine Schreibvorgänge mit Office-JavaScript-APIs, z. B. mit Range.values zum Festlegen eines Zellwerts. Das Aufrufen eines Schreibvorgangs in einer synchronen benutzerdefinierten Funktion kann dazu führen, dass Excel einfriert.
Excel-Prozesse, die von synchronen benutzerdefinierten Funktionen unterstützt werden
Die folgenden Aktionen und Prozesse funktionieren mit synchronen benutzerdefinierten Funktionen.
Unterstützte Auswertungsaktionen
- Wählen Sie Formeln und dann Formeln auswerten in Excel aus.
- Auswählen von Formeln und dann Funktion einfügen in Excel.
- Wählen Sie im Zellbearbeitungsmodus einen Teil einer Formel aus, und verwenden Sie F9, um Teilberechnungsergebnisse anzuzeigen.
- Die
Application.Calculate-Methode in VBA.
Unterstützte Aktionen im bedingten Format
Die folgende Liste gilt für Aktionen zur bedingten Formatierung, die sowohl von der Excel-Benutzeroberfläche als auch von Office JavaScript-APIs ausgelöst werden.
- Erstellen Sie eine neue Regel.
- Regeln bearbeiten.
- Regeln löschen.
- Regeln neu anordnen.
- Ändern Sie den Bereich "Gilt für".
- Aktivieren oder deaktivieren Sie "Stop if true".
- Löschen Sie alle Regeln.
- Ausschneiden und Einfügen von Zellen, die bedingte Formatierung enthalten.
- Kopieren und Einfügen von Zellen, die bedingte Formatierung enthalten.
Hinweis
Wenn die Ausführung einer synchronen benutzerdefinierten Funktion viel Zeit in Anspruch nimmt, kann Excel die Benutzeroberfläche vorübergehend blockieren, während auf das Ergebnis gewartet wird. Um längere Unterbrechungen zu vermeiden, können Benutzer die Ausführung der Funktion jederzeit abbrechen, indem sie die ESC-TASTE verwenden oder eine beliebige Stelle außerhalb der Zelle oder des Dialogfelds auswählen.
Aktivieren der synchronen Unterstützung in Ihrem Add-In
Führen Sie die folgenden Schritte aus, um synchrone Szenarien in Ihrem Add-In zu unterstützen.
- Wenn Sie JSON-Metadaten automatisch generieren, verwenden Sie das
@supportSyncJSDoc-Tag. - Wenn Sie JSON-Metadaten manuell erstellen, verwenden Sie die
"supportSync": trueEinstellung im"options"-Objekt Ihrer functions.json-Datei . - Wenn die Funktion verwendet
Excel.RequestContext, rufen Sie diesetInvocation-Methode von aufExcel.RequestContext, und übergeben Sie dasCustomFunctions.Invocation-Objekt. Ein Beispiel finden Sie im Codebeispiel.
Wichtig
Synchrone benutzerdefinierte Funktionen können keine Streaming- oder flüchtigen Funktionen sein. Wenn Sie das @supportSync Tag mit @volatile - oder @streaming -Tags verwenden, ignoriert Excel die synchrone Unterstützung. Die Unterstützung für Flüchtige oder Streaming hat Vorrang.
Codebeispiel
Im folgenden Codebeispiel wird das Erstellen einer synchronen benutzerdefinierten Funktion veranschaulicht.
/**
* A synchronous custom function that takes a cell address and returns the value of that cell.
* @customfunction
* @supportSync
* @param {string} address The address of the cell from which to retrieve the value.
* @param {CustomFunctions.Invocation} invocation Invocation object.
* @returns The value of the cell at the input address.
*/
export async function getCellValue(address, invocation) {
const context = new Excel.RequestContext();
context.setInvocation(invocation); // The `invocation` object must be passed in the `setInvocation` method for synchronous functions.
const range = context.workbook.worksheets.getActiveWorksheet().getRange(address);
range.load("values");
await context.sync();
return range.values[0][0];
}
Siehe auch
Office Add-ins