【问题标题】:How to declare optional function argument with empty array default value in VBA?如何在 VBA 中声明具有空数组默认值的可选函数参数?
【发布时间】:2014-12-18 13:21:46
【问题描述】:

我正在尝试构建下面的例程。例程的最后一个参数是一个可选数组,默认情况下它应该有两个空字符串。下面的声明不起作用,它给了我这个错误:编译错误:需要常量表达式

Public Sub CreateReport(rpt As Report, rptSelectFLDS As Variant, _
                        rptWhereConds As Dictionary, _
                        Optional rptTopSelect As Variant = Array("", ""))

【问题讨论】:

    标签: vba ms-access optional-arguments


    【解决方案1】:

    检查一下参数IsMissing()怎么样?

    Public Sub CreateReport(rpt As Report, rptSelectFLDS As Variant, _
                            rptWhereConds As Dictionary, _
                            Optional rptTopSelect As Variant)
    
        If IsMissing(rptTopSelect) Then rptTopSelect = Array("", "")
    

    【讨论】:

    • 是的,这是一种可能的解决方法。但我很好奇,有没有办法为可选的数组参数设置默认值?也许这是可行的,但我的语法不好。
    • 老实说,我也很好奇。我现在只是没有坐在我的机器前。
    • 我已经做了一些挖掘,答案是否定的。您不能在签名行中设置默认值,因为它需要一个常量表达式。您所能做的就是检查变体是否丢失。我想你可以用第二个函数伪造一个重载,但这看起来很复杂。
    • 好的,将其添加到您的答案中,我会将其标记为正确
    猜你喜欢
    • 2020-09-04
    • 2020-08-23
    • 1970-01-01
    • 2020-01-19
    • 1970-01-01
    • 2016-07-03
    • 2021-07-04
    • 1970-01-01
    • 2013-04-25
    相关资源
    最近更新 更多