Freigeben über


xlAsyncReturn

Gilt für: Excel 2013 | Office 2013 | Visual Studio

Wird verwendet, um das Ergebnis einer asynchronen benutzerdefinierten Funktion (UDF) zurückzugeben.

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

Parameter

pxAsyncHandle (xltypeBigData)

Das asynchrone Handle der UDF, an die das Ergebnis zurückgegeben wird.

pxFunctionResult

Der Rückgabewert der UDF.

Eigenschaftswert/Rückgabewert

Bei erfolgreicher Ausführung wird TRUE (xltypeBool) zurückgegeben. Wenn der Fehler nicht erfolgreich ist, wird FALSE zurückgegeben.

Hinweise

xlAsyncReturn ist der einzige Rückruf, den Excel für Nicht-Berechnungsthreads während der Neuberechnung zulässt. Der asynchrone Teil einer asynchronen UDF darf keine anderen Rückrufe als xlAsyncReturn ausführen. Die XLL muss Speicher freigeben, der für den Rückgabewert zugeordnet ist.

Die Parameter pxAsyncHandle und pxFunctionResult können auch vom Typ xltypeMulti sein, wenn sie verwendet werden, um ein Array von Handles und entsprechenden Werten in einem einzelnen Rückruf zurückzugeben. Wenn Sie einen einzelnen Rückruf verwenden, übergeben Sie einen LPXLOPER12, der auf XLOPER12 Strukturen verweist, die eindimensionale Arrays enthalten, die die asynchronen Handles und Rückgabewerte enthalten. Diese Arrays müssen sich in der gleichen Reihenfolge befinden, damit Excel ein asynchrones Handle ordnungsgemäß mit dem entsprechenden Wert abgleichen kann.

Das folgende Beispiel zeigt, wie Sie mithilfe von xlAsyncReturn einen Batchaufruf durchführen können.

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;

Siehe auch