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

时间:2015-02-17 15:52:31

标签: excel vba

我已经查看了无数的示例(并且有很多可以找到),如何使用Ranges来完成VBA用户定义的函数/ sub,以将一个指定单元格的值复制到另一个。不幸的是,无论我尝试哪种,我都无法避免错误1004应用程序定义或对象定义的错误。这是非常简单的测试代码:

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

感谢您提供任何帮助/指示!

2 个答案:

答案 0 :(得分:1)

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

我确认此实现会引发错误,并且还会毫无错误地测试对foobar的手动调用。

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

答案 1 :(得分:0)

不允许修改UDF中的单元格(一个函数,在单元格中使用与内置公式相同的方式)。如果您从barfoo单元格中移除了对C1的来电,则Foobarbarfoo都可以正常运行。