Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.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 为什么会出现VBA运行时错误';424';此代码中的对象必需错误?_Excel_Vba - Fatal编程技术网

Excel 为什么会出现VBA运行时错误';424';此代码中的对象必需错误?

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

在我的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'对象。我是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是您的第一种编程语言,那么这确实有点出乎意料和违反直觉。请参阅我添加的链接和说明。:)