2017-12-06 10 views
1

私はVBAコードをC#にスプレッドシートギア用に移植するプロジェクトに取り組んでいます。私のチームは、約150のカスタムExcelアドイン機能を正常に移植しました。関数の1つについて、回帰スプレッドシートは148個の関数呼び出しのうちの4つについて#valueを返し、残りは期待される結果を返します。コードをステップ実行すると、すべてが正常に機能し、正しい結果がresult.Numberに書き込まれますが、スプレッドシートギアの#valueに解決されます。私は完全にうんざりです!私を助けてください - 私はどこから始めるべきか分かりません。次のようにスプレッドシートギアresult.Numberに正しい戻り値が含まれている場合の#value

機能の終了は、次のとおり

if (retval < 0) 
{ 
    result.Text = UtilFuncs.ErrorNum(retval); 
} 
else 
{ 
    result.Number = retval; 
} 

retvalは、別のDLLへの呼び出しから返された正しい結果を含みます。 result.Numberにカーソルを合わせると、正しい結果も表示されます。しかし、私は#値を取得します。

必要に応じてさらにコードを提供できます。私の大きな疑問は、それが4人以外のすべての人にとって効果的な理由です。

答えて

1

より具体的な例がなければ、それはこれに決定的な答えを提供するために、およそ不可能です。私は暗闇の中で撃つだろう。

IArgumentsのような方法をIArgumentsのように使用する場合。 GetNumber(...)、 GetLogical(...)など、カスタム関数の引数にアクセスするには、これらのドキュメントを参照してください。たとえば、GetLogical(...)の次の注釈を参照してください。

  • 論理的でない引数は、可能であれば論理値に変換されます。 それ以外の場合は、このメソッドによってfalseが返され、内部フラグが に設定され、エラーが発生して の式の結果がエラーになることを示します。

ブール値ではない値を引数に渡すと、関数はこの内部の「エラー」フラグがセットされ、#VALUE!になります。メソッドの最後に結果オブジェクトを設定するかどうかに関係なく、このセルにエラーが表示されます。

この場合、IArgumentsを使用できます。 ClearError(...)メソッドを使用してエラーをクリアします。

+0

ありがとうございます!私はIArguments.ClearError()メソッドを使用して、今私は期待される結果を得る。すべての引数が正しいGetNumberまたはGetTextを使用して取得されているようです。 – user1769597

関連する問題