2012-01-09 17 views
1

Excelアドインの開発を進めています。私は、Excel 2007 SDKのサンプルコードを使用して小さな関数をガイドとして試しています。私は、Excelでダブルタイプのデータを表示しようとするのが難しいです。サンプルコードの実行時にUDFがDisplayDouble()と呼ばれ、DisplayDouble(12.3)などの実数型データの引数を指定して呼び出しを行うと仮定すると、実数型データを参照する引数を使用しようとすると、 DisplayDouble(A1)などのセルからExcelワークシートのセルA1の値が12.3の場合サンプルコードが機能しないExcel 2007 SDKを使用してxlTypeNumをC++で倍精度化する方法

この段落のサンプルコードは、次のとおりです。任意のヒントは、私はあなたがxltypeNumに値を強要のように見えますが、その後、D = xlt.val.wではなく、D = xlt.val.numで、整数値を取っている学習ラダーに沿って

_declspec(dllexport) LPXLOPER12 WINAPI DisplayDouble (LPXLOPER12 n) 
{ 
    static XLOPER12 xResult; 
    XLOPER12 xlt; 
    int error = -1; 
    double d; 

    switch (n->xltype) 
    { 

    case xltypeNum: 
     d = (double)n->val.num; 
     if (max < 0) 
       error = xlerrValue; 
     xResult.xltype = xltypeNum; 
     xResult.val.num = d; 
     break; 

    case xltypeSRef: 
     error = Excel12f(xlCoerce, &xlt, 2, n, TempNum12(xltypeNum)); 

     if (!error) 
     { 
       error = -1; 
       d = xlt.val.w; 
       xResult.xltype = xltypeNum; 
       xResult.val.num = d; 
     } 
     Excel12f(xlFree, 0, 1, &xlt); 
     break; 
    default: 
     error = xlerrValue; 
     break; 
    } 

    if (error != - 1) 
    { 
     xResult.xltype = xltypeErr; 
     xResult.val.err = error; 
    } 

    //Word of caution - returning static XLOPERs/XLOPER12s is not thread safe 
    //for UDFs declared as thread safe, use alternate memory allocation mechanisms 
    return(LPXLOPER12) &xResult; 
} 

答えて

1

を移動するのに役立ちます

+0

エラーを指摘していただきありがとうございます。 –

関連する問題