xlfEvaluate
S’applique à: Excel 2013 | Office 2013 | Visual Studio
Utilise l’analyseur Microsoft Excel et l’évaluateur de fonction pour évaluer toute expression pouvant être entrée dans une cellule de feuille de calcul.
Excel12(xlfEvaluate, LPXLOPER12 pxRes, 1, LPXLOPER12 pxFormulaText);
Paramètres
pxFormulaText (xltypeStr)
Chaîne à évaluer. Un signe égal de début (=) est facultatif. La chaîne peut être n’importe quel texte qui peut légalement être entré dans une cellule de feuille de calcul ou de macro.
Valeur de propriété/valeur de renvoi
Retourne le résultat de l’évaluation de la chaîne qui peut être l’un des types xltypeNum, xltypeStr, xltypeBool, xltypeErr, xltypeNil, xltypeMulti.
Remarques
La chaîne peut contenir uniquement des fonctions, pas des équivalents de commande. Cela équivaut à appuyer sur F9 à partir de la barre de formule. Si xlfEvaluate est appelé à partir d’une fonction de feuille de calcul XLL qui a été inscrite en tant que thread-safe, l’expression doit contenir uniquement des fonctions thread-safe.
L’utilisation principale de la fonction xlfEvaluate est d’autoriser les DLL à déterminer la valeur affectée à un nom défini qui se trouve sur une feuille ou un nom masqué défini dans la DLL. Notez que dans une DLL/XLL, un nom de feuille de calcul doit être préfixé avec au moins un point d’exclamation ( !) pour garantir qu’il est interprété comme externe à la DLL. Pour plus d’informations, consultez Évaluation des noms et autres expressions de formule de feuille de calcul.
xlfEvaluate ne peut pas être utilisé pour évaluer les références à une feuille externe qui n’est pas ouverte.
Exemple
Cet exemple utilise xlfEvaluate pour contraindre le texte « ! B38 » au contenu de la cellule B38.
\SAMPLES\EXAMPLE\EXAMPLE.C
. Cette fonction appelle une macro de commande (xlcAlert) et fonctionne correctement uniquement lorsqu’elle est appelée à partir d’une feuille de macro ou en tant que commande de macro.
short WINAPI EvaluateExample(void)
{
XLOPER12 xFormulaText, xRes, xRes2, xInt;
xFormulaText.xltype = xltypeStr;
xFormulaText.val.str = L"\004!B38";
Excel12(xlfEvaluate, &xRes, 1, (LPXLOPER12)&xFormulaText);
xInt.xltype = xltypeInt;
xInt.val.w = 2;
Excel12(xlcAlert, &xRes2, 2, (LPXLOPER12)&xRes, (LPXLOPER12)&xInt);
Excel12(xlFree, 0, 1, (LPXLOPER12)&xRes);
Excel12(xlFree, 0, 1, (LPXLOPER12)&xRes2);
return 1;
}