我已經定義了我自己的Excel函數(稱爲ADXExcelFunctionDeescriptor或)。方法存根(stub)如下所示:Excel函數在通過代碼設置後拋出異常。在Excel中使用時工作
public static object ExecuteMyFunction(object values, object tagName)
{ // Some code here }
該方法接收一個double值數組和一個名爲name的字符串。
在設計視圖中我ADXExcelFunctionDeescriptor看起來像以下:
我打電話,通過下面的代碼行設置功能:
var formula = string.Format(@"={0}({1};{2})", Temp.FORMULA_NAME, this.DataRangeTextBox.Text, tagCaption);
resultRange.set_Value(Type.Missing, formula);
resultRange.Formula = resultRange.Value;
這將導致異常!唯一的例外如下所示:
System.Runtime.InteropServices.COMException occurred
HResult=-2146827284
Message=Ausnahme von HRESULT: 0x800A03EC
Source=""
ErrorCode=-2146827284
StackTrace:
bei System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData)
bei Microsoft.Office.Interop.Excel.Range.set_Value(Object RangeValueDataType, Object)
bei bb.ExcelToolbar.Controls.bbControl.ApplyFormula(Object sender, EventArgs e) in c:\xx\yy\zz\bb\bb.ExcelToolbar\Controls\bbControlcs:Zeile 88.
InnerException:
而且,如果我沒有通過的標記名參數的函數返回沒有任何異常或錯誤的結果。
var formula = string.Format(@"={0}({1})", Temp.FORMULA_NAME, this.DataRangeTextBox.Text, tagCaption);
resultRange.set_Value(Type.Missing, formula);
resultRange.Formula = resultRange.Value;
所以我認爲它與字符串參數有關。 我還嘗試用「或」字符圍繞字符串參數,但目前爲止沒有任何變化
此外,如果我直接在Excel中鍵入函數,它的工作原理沒有任何問題,例如,如果我輸入以下公式中的Excel:
=Temp.DoSomething(B2:B13;"Flow")
也許我錯過了什麼或做錯事
什麼是內部異常? –
@israelaltar:內部異常是NULL。 –
您是否嘗試過在公式中使用逗號= {0}({1},{2})或冒號? –