如何为可选的Range参数设置默认值?

Zab*_*aba 5 excel vba excel-vba

我正在尝试编写一个将Range作为可选参数的函数.这是这种功能的最小例子:

Function Example(s As String, Optional r As Range) As String
    Example = "Test"
End Function
Run Code Online (Sandbox Code Playgroud)

这没关系,可以编译VBA模块.但我很难找到如何为这个可选范围参数设置默认值,例如"B:B".

Function Example(s As String, Optional r As Range **= Range("B:B")**) As String
    Example = "Test"
End Function
Run Code Online (Sandbox Code Playgroud)

这不编译.它抛出错误"需要常量表达式".

Sco*_*man 5

检查参数是否在函数内部传递,如果没有则将其设置在那里.

Function Example(s As String, Optional r As Range) As String

    If r Is Nothing then Set r = Range("B:B")

    Example = "Test"

End Function
Run Code Online (Sandbox Code Playgroud)


Zab*_*aba 5

谢谢,斯科特给我指明了方向。我进一步搜索了这个,正确的方法似乎是这样的:

Function Example(s As String, Optional r As Range = Nothing) As String
    If IsMissing(r) Then
        r = Range("B:B")
    End If
    Example = "Test"
End Function
Run Code Online (Sandbox Code Playgroud)

我不明白为什么你可以为 pret 定义默认值