我试图确定何时在没有提供 ParamArray 参数的工作表上使用了使用 ParamArray 的用户定义函数 (UDF)。
我尝试过 IsEmpty、IsArray、IsError、与无比较、与零长度字符串比较等。
我知道 paramarray 总是 byVal 并且变量数组总是从零开始,但是如果它不存在,它是一个数组吗?
- 将数组的第一个元素与 Nothing 或 Not Nothing 进行比较会引发错误
- IsEmpty 报告错误
- IsArray 奇怪地报告 True
- IsError 对两个测试和测试都报告 False (0)
测试参数 UDF:
Public Function testParams(ByRef ndx As Long, ParamArray tests())
Select Case ndx
Case 1
testParams = CBool(tests(LBound(tests)) Is Nothing)
Case 2
testParams = IsEmpty(tests)
Case 3
testParams = IsArray(tests)
Case 4
testParams = IsError(tests)
Case 5
testParams = CBool(tests(LBound(tests)) = vbNullString)
End Select
End Function
在下面的示例中,我只是返回到工作表,尝试访问 ParamArray 返回的内容。
如何确定用户是否没有在需要它们的真实 UDF 中提供 ParamArray 参数?我更喜欢简单的布尔检查,而不是针对测试某事是否什么都不是的测试。