如何解决VBA IsMissing返回错误的缺失参数
我正在尝试为Datediff函数创建包装函数。该间隔将具有一个可选参数。我想检查参数是否通过。我以为可以在参数上使用IsMissing()函数。但是,如果未传递可选参数,它将返回false
Public Function test1(tdDate1 As Date,tdDate2 As Date,Optional tcInterval As String) As Long
Debug.Print IsMissing(tcInterval)
End Function
这里的输出:
?test1(#01/15/2020#,#01/16/2021#)
False
0
我在做什么错了?
解决方法
IsMissing
仅适用于Variants
。来自Microsoft Documentation
使用IsMissing函数来检测在调用过程中是否提供了可选的Variant参数。如果没有为指定的参数传递值,则IsMissing返回True;否则,返回true。否则,它返回False。 (...)
IsMissing不适用于简单数据类型(例如Integer或Double),因为与Variants不同,它们没有提供“丢失”标志位的规定
如果您要检查是否传递了字符串参数,请提供默认值并进行检查,或者将参数类型更改为Variant
-但是您会松开类型安全性。
Public Function test1(tdDate1 As Date,tdDate2 As Date,Optional tcInterval As String="")
If tcInterval="" then
Debug.Print "No Interval value passed."
End If
End Function
,
您应验证间隔设置:
for
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。