Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 当我试图写入作为函数中的参数传递的范围时,为什么会出现1004错误?_Excel_Vba - Fatal编程技术网

Excel 当我试图写入作为函数中的参数传递的范围时,为什么会出现1004错误?

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

我正在编写一个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的过程foo中遇到错误1004(应用程序定义的错误或对象定义的错误),这将不起作用

我想做的至少是可能的吗


提前感谢您与我一起关注这个问题

您应该使用Sub而不是UDF。


<强> UDFS/Stult>用于返回值而不是通过副作用更改单元格。

这里有几个要点要考虑……/P> 注意函数定义中的输入错误,使用OptionExplicit可以避免<代码>选项存储!=<代码>可选资源。但我认为应该是424,而不是1004

另外,值得注意的是:


如果您是从VBA代码中的其他位置调用此函数(而不是从用户定义的工作表函数),这可能不适用于您,但我仍然建议不要使用函数来操作对象。这应该由子例程完成,并使用函数返回值或计算表达式等。

通常不可能使用从工作表调用的UDF以任何方式操作工作表对象。Re:上面,有一些黑客可以绕过这个限制,但我不建议这样做。谢谢,我更正了拼写错误以使事情更清楚。但事实上,我认为有一个可以从函数返回另一个结果的目标是很方便的。也许更好的解决方案是数组公式,但我从未创建过这样的函数。。。有什么想法吗?