Dan*_* W. 8 c# excel excel-formula excel-addins addin-express
我已经定义了自己的Excel函数(称为ADXExcelFunctionDeescriptor).方法存根如下所示:
public static object ExecuteMyFunction(object values, object tagName)
{ // Some code here }
Run Code Online (Sandbox Code Playgroud)
该方法接收一个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;
Run Code Online (Sandbox Code Playgroud)
这将导致异常!例外情况如下:
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:
Run Code Online (Sandbox Code Playgroud)
此外,如果我没有传递tagName参数,该函数将返回一个没有任何异常或错误的结果.
var formula = string.Format(@"={0}({1})", Temp.FORMULA_NAME, this.DataRangeTextBox.Text, tagCaption);
resultRange.set_Value(Type.Missing, formula);
resultRange.Formula = resultRange.Value;
Run Code Online (Sandbox Code Playgroud)
所以我认为它与字符串参数有关.我还尝试用"或"字符包围字符串参数但到目前为止没有变化.
此外,如果我直接在Excel中键入函数,它的工作没有任何问题.因此,例如,如果我在Excel中键入以下公式:
=Temp.DoSomething(B2:B13;"Flow")
Run Code Online (Sandbox Code Playgroud)
也许我错过了什么或做错了什么?
看起来你不是在构造的UDF字符串公式中的第二个参数tagCaption周围添加引号.该值应该有引号.
var formula = string.Format(@"={0}({1};""{2}"")",Temp.FORMULA_NAME,
this.DataRangeTextBox.Text, tagCaption);
Run Code Online (Sandbox Code Playgroud)
另外:请参阅Chris Neilsen的评论:Excel - 使用VBA插入公式
在VBA
.Formula,.FormulaArray并.FormulaR1C1使用国际分隔符(即,)和.FormulaLocal和.FormulaR1C1Local使用用户的语言(这样可以使用;,如果这是你的语言设置).所以对于这个OP分配.FormulaArray它是正确的说总是使用,
| 归档时间: |
|
| 查看次数: |
687 次 |
| 最近记录: |