xlAsyncReturn
Hace referencia a: Excel 2013 | Office 2013 | Visual Studio
Se usa para devolver el resultado de una función asincrónica definida por el usuario (UDF).
Excel12(xlAsyncReturn, LPXLOPER12 pxRes, 2, LPXLOPER12 pxAsyncHandle, LPXLOPER12 pxFunctionResult);
Parameters
pxAsyncHandle (xltypeBigData)
Identificador asincrónico de la UDF a la que se devuelve el resultado.
pxFunctionResult
Valor devuelto de la UDF.
Valor de la propiedad/valor devuelto
Si se ejecuta correctamente, devuelve TRUE (xltypeBool). Si no se realiza correctamente, devuelve FALSE.
Comentarios
xlAsyncReturn es la única devolución de llamada que Excel permite en subprocesos que no son de cálculo durante la actualización. La parte asincrónica de una UDF asincrónica no debe realizar ninguna devolución de llamada que no sea xlAsyncReturn. El XLL debe liberar memoria asignada para contener el valor devuelto.
Los parámetros pxAsyncHandle y pxFunctionResult también pueden ser de tipo xltypeMulti cuando se usan para devolver una matriz de identificadores y los valores correspondientes en una sola devolución de llamada. Al usar una única devolución de llamada, pase un LPXLOPER12 que apunte a estructuras XLOPER12 que contienen matrices unidimensionales que contienen los identificadores asincrónicos y los valores devueltos. Estas matrices deben estar en el mismo orden para que Excel coincida correctamente con un identificador asincrónico con su valor correspondiente.
En el ejemplo siguiente se muestra cómo realizar una llamada por lotes mediante xlAsyncReturn.
int batchSize = 10;
LPXLOPER12 pHandles = new XLOPER12[batchSize];
LPXLOPER12 pValues = new XLOPER12[batchSize];
/*Add code to fill in LPXLOPER12 arrays (pHandles and pValues)
with the XOPER12 structures that contain the asynchronous handles
and values, in respective order*/
//Create an XLOPER12 of type xltypeMulti, and fill the Handle array
XLOPER12 handleArray;
handleArray.xltype = xltypeMulti;
handleArray.val.array.rows = 1;
handleArray.val.array.columns = (COL)batchSize;
handleArray.val.array.lparray = pHandles;
//Create an XLOPER12 if type xltypeMulti, and fill the Values array
XLOPER12 valueArray;
valueArray.xltype = xltypeMulti;
valueArray.val.array.rows = 1;
valueArray.val.array.columns = (COL)batchSize;
valueArray.val.array.lparray = pValues;
//Make the callback with the return value
int ret = Excel12(xlAsyncReturn, 0, 2, &handleArray, &valueArray);
//Add code to free the allocated memory here (pHandles, pValues, valueArray, handleArray)
return ret;