将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”
谢谢你这么快解决!
最好