xlStack

適用対象: Excel 2013 | Office 2013 | Visual Studio

スタック上の空き領域を確認します。

Excel12(xlStack, LPXLOPER12 pxRes, 0);

パラメーター

この関数に引数はありません。

プロパティ値/戻り値

スタック上に残っているバイト数 (xltypeInt) を返します。

注釈

最近のバージョンの使用可能なスタック領域の容量は、XLOPER の 16 ビットの符号付き整数に収まりません。 つまり、xlStackXLOPER および Excel4 または Excel4v を使用して呼び出したときに -32767 から 32768 の間の値を返すことができる、ということです。 この場合に正しい値を取得するには、戻り値を unsigned short 型にキャストします。

Excel 2007 以降では、XLOPER12 および Excel12 または Excel12v を使用して、この関数を呼び出す必要があります。その場合、戻り値は使用可能なスタック領域の容量か、64 KB のいずれか小さい方になります。

Excel にはスタック上の領域が限られているので、この領域をオーバーランしないように注意する必要があります。 スタックに非常に大きなデータ構造を配置し、できるだけ多くのローカル変数を静的にしないでください。 関数を再帰的に呼び出すことは避けてください。これはスタックをすばやくいっぱいにするためです。

スタックをオーバーランしている疑いがある場合は、この関数を頻繁に呼び出して、スタック領域がどの程度残っているか確認します。

最初の例では、残りのスタック領域の量と が に含まれている \SAMPLES\EXAMPLE\EXAMPLE.Cアラート メッセージを表示します。 2 つ目の例では、 XLOPERの操作と同じことを行い、SDK サンプル コードには含まれていません。

short WINAPI xlStackExample(void)
{
   XLOPER12 xRes;
   Excel12(xlStack, &xRes, 0);
   Excel12(xlcAlert, 0, 1, (LPXLOPER12)&xRes);
   return 1;
} 
short int WINAPI xlStackExample_XLOPER(void)
{
    XLOPER xRes;
    Excel4(xlStack, (LPXLOPER)&xRes, 0);
    xRes.xltype = xltypeNum; // Change the type to double
    // Cast to an unsigned short to get rid of the overflow problem
    xRes.val.num = (double)(unsigned short) xRes.val.w;
    Excel4(xlcAlert, 0, 1, (LPXLOPER)& xRes);
    return 1;
}

関連項目