Excel 当我试图写入作为函数中的参数传递的范围时,为什么会出现1004错误?
我正在编写一个Excel函数,我希望它可以选择性地将第二个结果写入Excel 当我试图写入作为函数中的参数传递的范围时,为什么会出现1004错误?,excel,vba,Excel,Vba,我正在编写一个Excel函数,我希望它可以选择性地将第二个结果写入 Public Function foo(A As String, B As String, C As String, Optional optionalRes As Range = Nothing) ... If not optionalRes is Nothing then optionalRes.Value="Result!" End If End Function 不幸的是,如果我在模块fooBar的过程f
Public Function foo(A As String, B As String, C As String, Optional optionalRes As Range = Nothing)
...
If not optionalRes is Nothing then
optionalRes.Value="Result!"
End If
End Function
不幸的是,如果我在模块fooBar的过程foo中遇到错误1004(应用程序定义的错误或对象定义的错误),这将不起作用
我想做的至少是可能的吗
提前感谢您与我一起关注这个问题 您应该使用Sub而不是UDF。
<强> UDFS/Stult>用于返回值而不是通过副作用更改单元格。
这里有几个要点要考虑……/P> 注意函数定义中的输入错误,使用OptionExplicit可以避免<代码>选项存储!=<代码>可选资源。但我认为应该是424,而不是1004
另外,值得注意的是:如果您是从VBA代码中的其他位置调用此函数(而不是从用户定义的工作表函数),这可能不适用于您,但我仍然建议不要使用函数来操作对象。这应该由子例程完成,并使用函数返回值或计算表达式等。通常不可能使用从工作表调用的UDF以任何方式操作工作表对象。Re:上面,有一些黑客可以绕过这个限制,但我不建议这样做。谢谢,我更正了拼写错误以使事情更清楚。但事实上,我认为有一个可以从函数返回另一个结果的目标是很方便的。也许更好的解决方案是数组公式,但我从未创建过这样的函数。。。有什么想法吗?