我需要从VBA和函数中调用excel函数。
我不知道我有多少变量参数(var1 to ...)。
有没有办法转换数组,并将其作为参数应用......? :
Application.Run("MyFunct", fixParam1, fixParam2, var1, var2 ... varx)
我虽然最终在python中有 kwargs ......
Application.run("myFunct", fixParam1, fixParam2, kwargs(myArray))
或许是paramarray的东西?
mySub( fixParam1, fixParam2, ParamArray var() as Variant)
Application.run([here I'm not sure...??])
答案 0 :(得分:1)
定义一个将数组作为参数的函数,如下所示:
Function testFunction(args())
然后您可以将数组传递给函数:
testFunction myArray
答案 1 :(得分:0)
如果您可以更改myFunct
来处理它,则可以传递数组。 http://www.cpearson.com/excel/passingandreturningarrays.htm
Application.run("myFunct", fixParam1, fixParam2, myArray)
所以我推断myFunct
接受这样的参数:fixParam1,fixParam2,[var1],[var2],......括号表示可选参数。所以你可能有许多可选参数。
选项1 因此,创建一个包含所有参数的数组,并按如下方式调用它:
Application.Run("MyFunct", fixParam1, fixParam2, myArray(0), myArray(1), _
myArray(2), myArray(3), myArray(4), myArray(5))
希望被调用的函数可以处理空白输入。
选项2
如果myFunct
无法处理额外的参数,您可能需要执行以下操作:
Select Case argCount
Case 1
Call Application.Run("MyFunct", fixParam1, fixParam2, myArray(0))
Case 2
Call Application.Run("MyFunct", fixParam1, fixParam2, myArray(0), myArray(1))
Case 3
Call Application.Run("MyFunct", fixParam1, fixParam2, myArray(0), myArray(1), myArray(2))
Case 4
Call Application.Run("MyFunct", fixParam1, fixParam2, myArray(0), myArray(1), myArray(2), myArray(3))
End Select
不漂亮但有效。