xlAsyncReturn

S’applique à: Excel 2013 | Office 2013 | Visual Studio

Permet de retourner le résultat d’une fonction définie par l’utilisateur (UDF) asynchrone.

Excel12(xlAsyncReturn, LPXLOPER12 pxRes, 2, LPXLOPER12 pxAsyncHandle, LPXLOPER12 pxFunctionResult);

Paramètres

pxAsyncHandle (xltypeBigData)

Handle asynchrone de la fonction définie par l’utilisateur vers laquelle le résultat est retourné.

pxFunctionResult

Valeur de retour de la fonction définie par l’utilisateur.

Valeur de propriété/valeur de renvoi

En cas de réussite, retourne TRUE (xltypeBool). En cas d’échec, retourne FALSE.

Remarques

xlAsyncReturn est le seul rappel qu’Excel autorise sur les threads sans calcul pendant le recalcul. La partie asynchrone d’une fonction définie par l’utilisateur asynchrone ne doit pas effectuer de rappels autres que xlAsyncReturn. Le XLL doit libérer la mémoire allouée pour contenir la valeur de retour.

Les paramètres pxAsyncHandle et pxFunctionResult peuvent également être de type xltypeMulti lorsqu’ils sont utilisés pour retourner un tableau de handles et de valeurs correspondantes dans un seul rappel. Lorsque vous utilisez un rappel unique, passez un LPXLOPER12 qui pointe vers XLOPER12 structures qui contiennent des tableaux unidimensionnels contenant les handles asynchrones et les valeurs de retour. Ces tableaux doivent être dans le même ordre pour qu’Excel corresponde correctement à un handle asynchrone avec sa valeur correspondante.

L’exemple suivant montre comment effectuer un appel par lot à l’aide de 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;

Voir aussi