gpt4 book ai didi

vba - 使用 ParamArray(与 Variant 数组相比)有什么好处?

转载 作者:行者123 更新时间:2023-12-04 21:11:03 25 4
gpt4 key购买 nike

我用过 ParamArray多年来,我想接受可变数量的参数。一个很好的例子是这个 MinVal 函数:

Function MinVal(ParamArray Values() As Variant)
Dim ReturnVal As Variant, v As Variant

If UBound(Values) < 0 Then
ReturnVal = Null
Else
ReturnVal = Values(0)
For Each v In Values
If v < ReturnVal Then ReturnVal = v
Next v
End If
MinVal = ReturnVal

End Function
' Debug.Print MinVal(10, 23, 4, 17)
' 4

这可以在没有 ParamArray 的情况下重写为:
Function MinVal(Optional Values As Variant)
Dim ReturnVal As Variant, v As Variant

If IsMissing(Values) Or IsNull(Values) Then
ReturnVal = Null
Else
ReturnVal = Values(0)
For Each v In Values
If v < ReturnVal Then ReturnVal = v
Next v
End If
MinVal = ReturnVal

End Function
' Debug.Print MinVal(Array(10, 23, 4, 17))
' 4

注意在第二个示例中使用 Array()调用 MinVal 的函数。

第二种方法的优点是能够将参数数组传递给另一个也接受数组的函数。如果我希望能够在 MinVal 中传递参数数组,这提供了灵活性。到其他一些功能。

我开始认为我应该始终支持这种方法并停止使用 ParamArray共。

有人可能会争辩说,使用 ParamArray使代码更明确可读。但是,编译时检查没有优势,因为 ParamArray必须是一个 Variants 数组。 谁能提供一个令人信服的理由来使用 ParamArray ?

最佳答案

我的大部分ParamArray函数具有 std Array像这样完成繁重工作的版本:

Private Sub Command2_Click()
Process 1, 2, 3
End Sub

Private Sub Process(ParamArray A() As Variant)
ProcessArray CVar(A)
End Sub

Private Sub ProcessArray(B As Variant)
Debug.Print UBound(B)
End Sub

但这对输出参数不起作用,所以是替换 ParamArrayArray输出参数变得非常快非常不方便。

关于vba - 使用 ParamArray(与 Variant 数组相比)有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22465107/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com