Excel 为什么会出现VBA运行时错误';424';此代码中的对象必需错误?
在我的excel工作表中,我有一个名为Excel 为什么会出现VBA运行时错误';424';此代码中的对象必需错误?,excel,vba,Excel,Vba,在我的excel工作表中,我有一个名为su\u callLog的单元格 我的VBA代码是: Private Sub su_callLogCopy_Click() CopyCell (Range("su_callLog")) 'Error Here End Sub Sub CopyCell(cell As Range) MsgBox cell.Value End Sub 我正在尝试使用该函数来处理该单元格中的信息。即使我尝试仅打印范围的内容,也会得到所需的VBA运行时错误'424
su\u callLog
的单元格
我的VBA代码是:
Private Sub su_callLogCopy_Click()
CopyCell (Range("su_callLog")) 'Error Here
End Sub
Sub CopyCell(cell As Range)
MsgBox cell.Value
End Sub
我正在尝试使用该函数来处理该单元格中的信息。即使我尝试仅打印范围的内容,也会得到所需的VBA运行时错误'424'对象。我是VBA新手。请告诉我我做错了什么
注:MsgBox(范围(“su_callLog”)
产生预期结果。删除括号:
CopyCell Range("su_callLog")
如果使用括号,则强制使用参数ByVal
。而Range()
是一种对象类型,它通过ByRef
传递
删除括号:
CopyCell Range("su_callLog")
如果使用括号,则强制使用参数ByVal
。而Range()
是一种对象类型,它通过ByRef
传递
当@Vityata正确地指向oute时,您正在强制执行ByVal
当您需要传递对某个范围的引用时
虽然这是事实,CopyCell Range(“su_callLog”)
将产生所需的结果,但还有一种方法可以实现这一点:
其中,您隐式引用了括号中的范围
因此,换句话说,您(有意或无意)正确地传递引用
您不仅维护了所需(尽管不必要)的大括号语法,而且它实际上是有效的。此外,每次使用范围
对象时,使用特定的工作表
是一种良好的VBA编码实践
可以这么说,你在这里一箭双雕
当@Vityata正确地指向oute时,您正在强制执行ByVal
当您需要传递对某个范围的引用时
虽然这是事实,CopyCell Range(“su_callLog”)
将产生所需的结果,但还有一种方法可以实现这一点:
其中,您隐式引用了括号中的范围
因此,换句话说,您(有意或无意)正确地传递引用
您不仅维护了所需(尽管不必要)的大括号语法,而且它实际上是有效的。此外,每次使用范围
对象时,使用特定的工作表
是一种良好的VBA编码实践
可以这么说,你在这里一举两得效果不错!!我是VBA新手,这与直觉极为相反。你能告诉我为什么括号会导致错误吗@欢迎光临。一般来说,这取决于你来自哪个编程世界。如果你用C或C++编码,这是一个正常的,预期的错误。如果VBA是您的第一种编程语言,那么这确实有点出乎意料和违反直觉。请参阅我添加的链接和说明。:)成功了!!我是VBA新手,这与直觉极为相反。你能告诉我为什么括号会导致错误吗@欢迎光临。一般来说,这取决于你来自哪个编程世界。如果你用C或C++编码,这是一个正常的,预期的错误。如果VBA是您的第一种编程语言,那么这确实有点出乎意料和违反直觉。请参阅我添加的链接和说明。:)