Compartilhar via


xlfEvaluate

Aplica-se a: Excel 2013 | Office 2013 | Visual Studio

Usa o analisador e o avaliador de funções do Microsoft Excel para avaliar qualquer expressão que possa ser inserida em uma célula de planilha.

Excel12(xlfEvaluate, LPXLOPER12 pxRes, 1, LPXLOPER12 pxFormulaText);

Parâmetros

pxFormulaText (xltypeStr)

A cadeia de caracteres a ser avaliada. Um sinal de igual líder (=) é opcional. A cadeia de caracteres pode ser qualquer texto que possa ser inserido legalmente em uma planilha ou célula de planilha de macro.

Valor de propriedade/Valor de retorno

Retorna o resultado da avaliação da cadeia de caracteres que pode ser qualquer um dos tipos xltypeNum, xltypeStr, xltypeBool, xltypeErr, xltypeNil, xltypeMulti.

Comentários

A cadeia de caracteres pode conter apenas funções, não equivalentes de comando. É equivalente a pressionar F9 da barra de fórmulas. Se xlfEvaluate for chamado de uma função de planilha XLL que foi registrada como thread safe, a expressão deve conter apenas funções de thread-safe.

O uso primário da função xlfEvaluate é permitir que os DLLs descubram o valor atribuído a um nome definido que está em uma planilha ou em um nome oculto definido dentro da DLL. Observe que, dentro de uma DLL/XLL, um nome de planilha deve ser prefixado com pelo menos um ponto de exclamação (!) para garantir que ele seja interpretado como externo à DLL. Para obter mais informações, consulte Avaliando nomes e outras expressões de fórmula de planilha.

XlfEvaluate não pode ser usado para avaliar referências a uma planilha externa que não está aberta.

Exemplo

Este exemplo usa xlfEvaluate para coagir o texto "! B38" para o conteúdo da célula B38.

\SAMPLES\EXAMPLE\EXAMPLE.C. Essa função chama uma macro de comando (xlcAlert) e funcionará corretamente somente quando chamada de uma planilha de macro ou como um comando 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;
}

Confira também