Application.Run和范围参数?

如果我有一个excelfunction,如:

=my_function(A1:C4) 

我想从VBA调用这样的:

 Dim t as variant t = Application.Run("my_function",X) 

X代表A1:C4的最简单方法是什么?

你的范围必须来自一个工作表,所以如果你先定义该范围,然后将其传递给另一个工作簿中的函数(我认为这是你想要做的,因为你不会再使用Application.Run)。 所以下面的代码可以做到这一点:

 Sub RunFunctionInAnotherWorkbook() Dim rThisRange as Range Dim vResult as Variant Set rThisRange = ActiveSheet.Range("A1:C4") vResult = Application.Run("'MyOtherWorkbook.xls'!TheModuleName.TheSubName", rThisRange) End Sub 

而工作簿“MyOtherWorkbook.xls”中的function:

 Function TheSubName(inputRange as Range) as Variant 'Work your magic here End Function 

我没有尝试,但不会

 t=myfunction(range) 

最简单的语法是

 Application.Run("my_function", [A1:c4])