小编Ale*_*der的帖子

将空/可选参数传递给VBA函数

我的印象是,如果已使用一些可选参数定义了函数,则可以通过Nothing它,并且将其与“完全不传递任何东西”一样对待。

但是,我无法做到这一点。如果所有“ fds ...”变量都不为空,则以下代码片段可以很好地运行,但是如果有任何参数,则抛出“无效的过程调用或参数”Nothing:

Dim fdsSortOrders(2) As Variant
Dim fdsKey1 As Variant
Dim fdsKey2 As Variant
Dim fdsKey3 As Variant

' ...skipped...

Call loFinalReport.DataBodyRange.Sort( _
    Header:=xlYes, _
    Key1:=fdsKey1, Order1:=fdsSortOrders(0), _
    Key2:=fdsKey2, Order2:=fdsSortOrders(1), _
    Key3:=fdsKey3, Order3:=fdsSortOrders(2) _
)
Run Code Online (Sandbox Code Playgroud)

有没有办法传递Optional参数,或者我应该制作难看的复制粘贴代码(“ if fdskey2 is nothing and fdskey3 is Nothing Then SortUsingKey1Only)?

更新

这将起作用,因为Key2 / Key3和Order2 / Order3是可选的,但是我不想编写过程调用的三个版本:

Call loFinalReport.DataBodyRange.Sort( _
    Header:=xlYes, _
    Key1:=fdsKey1, Order1:=fdsSortOrders(0) _
)
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba

5
推荐指数
1
解决办法
2611
查看次数

标签 统计

excel ×1

excel-vba ×1

vba ×1