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

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

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

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

C#方法:

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

VBA代码:

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

testing结果:

  • 如果我创build一个替代方法没有参数或替代types,如int,布尔等 – 它工作正常。 错误似乎只发生在我尝试传递一个范围。
  • 如果我让VBA从方法中返回一个值(见下面),它就可以工作 – 即使这个方法是用void明确定义的。

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

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

我不明白为什么我有这些限制 – 为什么我必须返回一个值时传递对象到我的图书馆?

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

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

谢谢你这么快解决!

最好