VBA:将variables设置为“Empty”或“Missing”? 处理多个可选参数?

是否有可能或希望将对象/数据设置为“空”或“丢失”变体? 我希望能够有条件地将可选parameter passing给一个函数。 有时我想用一个可选的参数,有时候我不会。

在Python中,通过使用** kwdargs将字典或列表解压缩到函数参数中,您可以轻松地通过所需的可选参数。 有没有类似的东西(或在VBA中破解它的方法),所以你可以传入Empty / Missing可选参数?

特别是,我想用任意数量的参数使用Application.Run

编辑

我基本上是这样做的:

Public Function bob(Optional arg1 = 0, Optional arg2 = 0, Optional arg3 = 0, Optional arg4 = 0) bob = arg1 + arg2 + arg3 + arg4 End Function Public Function joe(Optional arg1) joe = arg1 * 4 End Function Public Sub RunArbitraryFunctions() 'Run a giant list of arbitrary functions pseudocode Dim flist(1 To 500) flist(1) = "bob" flist(2) = "joe" flist(3) = "more arbitrary functions of arbitrary names" flist(N) = ".... and so on" Dim arglist1(1 To 4) 'arguments for bob Dim arglist2(1 To 1) 'arguments for joe Dim arglist3(1 To M number of arguments for each ith function) For i = 1 To N 'Execute Application.Run, 'making sure the right number of arguments are passed in somehow. 'It'd also be nice if there was a way to automatically unpack arglisti Application.Run flist(i) arglisti(1), arglisti(2), arglisti(3), .... Next i End Sub 

由于每个函数调用的参数数量都会发生变化,因此确保将正确数量的inputinput到Application.Run中的方法是什么?

等效的Python代码将是

 funclist = ['bob', 'joe', 'etc'] arglists = [[1,2,3],[1,2],[1,2,3,4,5], etc] for args, funcs in zip(arglists, funclist): func1 = eval(funcs) output = func1(*args) 

VBA中使用ParamArray来input选项function。

请参阅培生材料