在Excel VBA中使用Application.someBuilt-InFunction时,是否有避免/缩短的方法?

我有一个代码,其中我使用vba的内置函数,但由于我有很多Application.mmult()Application.minverse

这是我的代码:

 Function MReg (Rango as Range) as variant MReg=application.mmult(application.minverse(application.mmult(Rango,application.transpose(Rango))),application.transpose(Rango)) End function 

有没有办法设置VBA,以便Application. 是不是nessesary?

你已经有了两个很好的答案,不过这是更优雅的东西:

创buildfunction,将以结构化的方式做你所需要的。

 Public Function MULT(M1 As Range, M2 As Range) As Variant MULT = Application.MMult(M1, M2) End Function Public Function TRANSPOSE(M1 As Range) As Variant TRANSPOSE = Application.TRANSPOSE(M1) End Function Public Function INVERSE(M1 As Range) As Variant INVERSE = Application.MInverse(M1) End Function 

那么你可以使用这些function到你的“主”function没有问题,我会看起来好多了:

 Function MREG(X As Range, Y As Range) As Variant MREG = MULT(MULT(INVERSE(MULT(X, TRANSPOSE(X))), TRANSPOSE(X)), Y) End Function 

我假设你想创build一个函数来运行多重回归,这就是为什么我修改了一点你的代码。

这将为你做到这一点:

 Function MReg (Rango as Range) as variant With Application MReg= .mmult(.minverse(.mmult(Rango,.transpose(Rango))),.transpose(Rango)) End With End function 

使用With -End With

 Function MReg(Rango As Range) As Variant With Application MReg = .MMult(.MInverse(.MMult(Rango, .Transpose(Rango))), .Transpose(Rango)) End With End Function