gpt4 book ai didi

vba - Selection 或 ActiveRange 可以是可选参数吗?

转载 作者:行者123 更新时间:2023-12-03 02:44:47 24 4
gpt4 key购买 nike

我一直在尝试用 VBA for excel 写下一些代码片段。我尝试这样做:

Sub populate(Optional ByVal r As Range = Selection)
'
' This only populates a selected range with each row number
'
Dim a As Range
For Each a In r
a = a.Row
Next

End Sub

但是当我运行时,它说我必须使可选参数必须保持不变。当我称之为 populate(Selection)populate(ActiveRange)

时也是如此

有可能做出我正在尝试的事情。

最佳答案

正如您所注意到的,您不能将可选参数默认为非常量。但是,如果将参数的变量类型更改为 Variant,则可以使用 IsMissing 函数来确定值是否已传递给子函数,如果没有则重新分配。

Sub Populate(Optional r As Variant)
If IsMissing(r) Then Set r = Selection
Dim a As Range
For Each a In r
a = a.Row
Next
Set r = Nothing
End Sub

如果您只是调用或运行Call Populate,它会确定r尚未传递给它并使用Selection。如果r(在本例中是一个或多个单元格的范围)像Call Populate(Range("A1:D5"))一样传递到子函数中,它会使用相反。

参见IsMissing function了解更多信息。

关于vba - Selection 或 ActiveRange 可以是可选参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28558443/

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