将Excel.Range从VBA传递到C#库时无效的过程调用或参数

时间:2014-06-04 11:47:29

标签: c# excel vba excel-vba

我在Visual Studio中有一个C#类库项目,用于扩展VBA项目的功能。

我创建了一个COM可访问类,它在构建时创建了一个TLB文件;我的VBA项目引用了这个TLB文件。

我希望能够将Excel.Range对象从VBA传递给我的C#类;但是我一直收到'无效的程序调用或参数'错误,我不明白为什么。

C#方法:

public void SetMetrics(Excel.Range MetricRange)
{
    //Implementation
}

VBA代码:

ObjectName.SetMetrics (SheetName.Range("RangeName"))

测试结果:

  • 如果我创建一个没有参数或替代类型的替代方法,如int,bool等 - 它工作正常。当我尝试传递Range时,似乎只会发生错误。
  • 如果我让VBA从方法返回一个值(见下文),它就可以工作 - ,即使该方法是用void明确定义的。

FunctionName = ClassName.SetMetrics(SheetName.Range(“RangeName”))

  • 如果我有多个Excel.Range参数 - 即使我不想要,VBA也会强制我返回一个值;但这也有效。

我不明白为什么我有这些限制 - 为什么在将对象传递给我的库时必须返回一个值?

1 个答案:

答案 0 :(得分:1)

谢谢Rory - 这是一个VBA语法错误:

答案:“删除VBA中的括号,或使用”呼叫:呼叫“

感谢您快速解决此问题!

最佳