我已经查看了无数的示例(并且有很多可以找到),如何使用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
感谢您提供任何帮助/指示!
答案 0 :(得分:1)
一般来说,您无法使用Function
来操作工作表对象。看起来你试图通过从subroutine
函数调用中调用barfoo
来解决这个问题。我怀疑是错误...如果你手动运行子程序foobar
(按F5或从宏菜单运行)它应该没有错误地执行。
我确认此实现会引发错误,并且还会毫无错误地测试对foobar
的手动调用。
如果你能更好地描述最终目标,也许我们可以推荐一种更可靠的方法来实现它。
答案 1 :(得分:0)
不允许修改UDF中的单元格(一个函数,在单元格中使用与内置公式相同的方式)。如果您从barfoo
单元格中移除了对C1
的来电,则Foobar
和barfoo
都可以正常运行。