Application.Run和范围参数?

时间:2012-12-10 11:37:45

标签: excel vba

如果我有excel功能,例如:

=my_function(A1:C4)

我希望从VBA这样称呼:

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

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

3 个答案:

答案 0 :(得分:5)

您的范围必须来自工作表,因此如果您首先定义该范围,然后将其传递给其他工作簿中的函数(我假设您要执行此操作,因为否则不会使用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 TheSubName(inputRange as Range) as Variant

    'Work your magic here

End Function

答案 1 :(得分:0)

我没试过,但不会

t=myfunction(range)

答案 2 :(得分:0)

最简单的语法是

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