Excel VBA基础工作表复制函数触发Run-time error 424‘Object required’错误
解决Excel VBA运行时错误424(Object required)
问题核心原因
你的代码报错的根源是:Worksheet.Copy方法执行后不会返回对象,但你试图把它的执行结果直接赋值给Worksheet类型的变量ws1,这种非法的对象赋值操作触发了“需要对象”的错误。虽然工作表复制的动作成功完成,但赋值环节本身不符合VBA语法规则,所以报错弹窗依然会出现。
修正后的代码
正确的写法是先执行复制操作,再通过新工作表的位置或名称获取它的对象引用:
Sub copyWorksheet() Dim ws1 As Worksheet ' 先执行工作表复制,不进行赋值 Worksheets("Manifest Blank").Copy After:=Worksheets(Worksheets.Count) ' 从工作表集合末尾获取新复制的工作表引用 Set ws1 = Worksheets(Worksheets.Count) ' 可选操作:给新工作表重命名 ws1.Name = "New Manifest Copy" End Sub
为何之前的尝试无效?
你替换Worksheets为Sheets、修改Worksheets.Count为具体数值或工作表名称等操作,都没有触及问题的本质——不管用哪种方式调用Copy方法,它都不会返回对象。只要你保留“把Copy()的执行结果赋值给变量”这个错误逻辑,就必然会触发424错误。
内容的提问来源于stack exchange,提问作者HopelessBrexitVictim
相关产品推荐
相关产品推荐

