我在 Excel 中有一个自定义函数,它处理作为参数传入的日期。它正常工作,但如果我直接传入 NOW() 作为参数,它会导致 #VALUE!错误。但是,如果我将 NOW() 放在一个单元格中,并将该单元格作为参数传递给它。我在 Excel 2007 和 Excel 2016 中都试过这个,它们都有相同的结果。
我做了一个简单的函数来突出显示这一点(而不是我原来的函数):
什么是更令人困惑的是,如果我把停止代码和步通过它,从现在的值()没有实际得到和功能运行正常通过。但在电子表格中它仍然显示为#VALUE!错误。
有谁知道为什么会发生这种情况以及使它起作用的方法?就像我说的,我知道我可以用 =NOW() 添加一列并使用该单元格作为参数,但我希望能够在不采取额外步骤的情况下做到这一点。
当您传入范围地址时,参数将作为范围传递Object
,然后在您的函数中成功评估。但是当你传递一个实际的时Date
,传递的参数不是VBA 中的对象,所以调用失败。
如果您将函数原型更改为以下内容,一切都会好起来的:
Function doStuff(inputThing as Variant)
根据Variant
定义,VBA 中的参数可以匹配任何内容,因此您可以将范围对象以及原始值传递给它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句