基于范围的单元格复制的错误1004

我已经看过无数的例子(还有很多可以find的)如何使用范围来完成一个VBA用户定义的函数/子复制一个指定单元格的值到另一个。 不幸的是,无论我尝试什么,我都无法避免错误1004应用程序定义或对象定义的错误。 这里是非常简单的testing代码:

Private Sub Foobar() On Error GoTo fooErrorHandler Dim c1 As Range Dim c2 As Range Set c1 = Sheets("Sheet1").Range("D2") Set c2 = Sheets("Sheet1").Range("B3") c2.Value = c1.Value Exit Sub fooErrorHandler: MsgBox "Error Number: " & Err.Number & vbNewLine _ & "Description: " & Err.Description End Sub 

感谢您的任何帮助/指针!

一般来说,您不能使用一个Function来操作工作表对象。 看起来你试图通过从barfoo函数调用调用一个subroutine来解决这个问题。 我怀疑这是错误…如果你手动运行子程序foobar (按F5或从macros菜单运行)它应该执行没有错误。

我确认这个实现提出了错误,并且也没有错误地testingfoobar的手动调用。

如果你能更好地描述最终目标,也许我们可以推荐一个更可靠的方法来实现它。

不允许修改UDF中的单元格(一个函数,在单元格内部使用,与内置公式相同)。 如果你从C1单元中删除了barfoo的呼叫, Foobarbarfoo都可以正常工作。