Compartir a través de


Funciones personalizadas sincrónicas

Las funciones personalizadas sincrónicas permiten que los procesos de evaluación y formato condicional se ejecuten en Excel simultáneamente con la función personalizada. Habilite la compatibilidad sincrónica cuando la función personalizada necesite ejecutarse en conjunto con cualquiera de los procesos de Excel enumerados en este artículo. Las funciones personalizadas que no admiten operaciones sincrónicas devuelven un error como #CALC! o #VALUE! cuando se ejecutan al mismo tiempo que estos procesos de Excel.

Advertencia

Las funciones personalizadas sincrónicas no admiten operaciones de escritura con las API de JavaScript de Office, como usar Range.values para establecer un valor de celda. Llamar a una operación de escritura en una función personalizada sincrónica puede hacer que Excel se bloquee.

Procesos de Excel compatibles con funciones personalizadas sincrónicas

Las siguientes acciones y procesos funcionan con funciones personalizadas sincrónicas.

Acciones de evaluación admitidas

  • Seleccione Fórmulas y, a continuación, Evaluar fórmula en Excel.
  • Seleccione Fórmulas y, a continuación, Insertar función en Excel.
  • En el modo de edición de celdas, seleccione parte de una fórmula y use F9 para ver los resultados parciales del cálculo.
  • Método Application.Calculate en VBA.

Acciones de formato condicional admitidas

La lista siguiente se aplica a las acciones de formato condicional desencadenadas por la interfaz de usuario de Excel y las API de JavaScript de Office.

  • Cree una nueva regla.
  • Editar reglas.
  • Eliminar reglas.
  • Reordenar reglas.
  • Cambie el intervalo "Se aplica a".
  • Active o desactive "Detener si es true".
  • Borre todas las reglas.
  • Cortar y pegar celdas que contengan formato condicional.
  • Copie y pegue las celdas que contienen formato condicional.

Nota:

Cuando una función personalizada sincrónica tarda mucho tiempo en completarse, Excel podría bloquear temporalmente la interfaz de usuario mientras espera el resultado. Para evitar interrupciones prolongadas, los usuarios pueden cancelar la ejecución de la función en cualquier momento mediante la tecla Esc o seleccionando cualquier lugar fuera de la celda o el cuadro de diálogo.

Habilitación de la compatibilidad sincrónica en el complemento

Para admitir escenarios sincrónicos en el complemento, siga estos pasos.

Importante

Las funciones personalizadas sincrónicas no pueden ser funciones de streaming ni volátiles . Si usa la @supportSync etiqueta con @volatile o @streaming etiquetas, Excel omite la compatibilidad sincrónica. La compatibilidad con streaming o volátil tiene prioridad.

Ejemplo de código

En el ejemplo de código siguiente se muestra cómo crear una función personalizada sincrónica.

/** 
 * 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];
}

Vea también