Vba Excel宏赢得';不能在不同的文件中工作
我在一个文件中开发了一个excel宏,但当我尝试在另一个相同格式的文件上运行它时,只是数据不同,我出错了。我得到的错误是运行时错误424:在下面的“If del is Nothing Then”行中需要对象 我不明白的是,在使用同一个宏的一个文件中,is如何会丢失对象“del”,而在另一个文件中却没有 有什么想法吗?短暂性脑缺血发作 您不需要Vba Excel宏赢得';不能在不同的文件中工作,vba,excel,Vba,Excel,我在一个文件中开发了一个excel宏,但当我尝试在另一个相同格式的文件上运行它时,只是数据不同,我出错了。我得到的错误是运行时错误424:在下面的“If del is Nothing Then”行中需要对象 我不明白的是,在使用同一个宏的一个文件中,is如何会丢失对象“del”,而在另一个文件中却没有 有什么想法吗?短暂性脑缺血发作 您不需要。在此处选择,也不需要关闭选择。相反,请执行以下操作: Columns("C:F").ClearContents 每个都相同。选择调用,然后在选择中选择成
。在此处选择,也不需要关闭选择。相反,请执行以下操作:
Columns("C:F").ClearContents
每个都相同。选择调用,然后在选择中选择成员调用
这将删除恼人的/冗余的/低效的Select
调用,但不会解决问题
没有声明任何变量。在模块顶部指定选项Explicit
;VBA将拒绝编译您的代码,直到声明所有变量
例如:
Dim rng As Range
Dim del As Range
既然del
有一个有效的编译时对象类型(Range
),那么在运行时,当为Nothing
检查运行时,它将是一个没有值的Range
对象引用,为Nothing
检查将计算为True
出现“object required”错误的原因是未声明del
,并且如果没有Option Explicit
,则允许代码在运行时动态“声明”变量(听起来很酷,但实际上是有害的)-每个未声明的变量都是变量
虽然变量
可以保存对象引用,但如果尚未为其分配任何内容,则其类型为变量/空
,VBA将拒绝将其视为对象引用
这将成功:
If IsEmpty(del) Then
但是IsEmpty
仅适用于Variant
。您需要的是使用正确的类型正确地声明所有内容。代码的其余部分在哪里?如果您在此处发布的内容正是您在新工作簿中粘贴的内容,那么您缺少了代码的顶部。顶部只剩下子IBFormatting()。你没有声明你的变量,Rng,cell,del。它们可能在工作簿中的其他地方公开声明,而不是在新工作簿中公开声明。在原始工作簿vba中搜索当前项目,并搜索Rng、单元格或del。在模块顶部添加显式选项也会很有帮助。On Error Resume Next
关闭错误处理;由于错误处理从未恢复,因此错误恢复下一条指令中的第二条指令是完全冗余的del
是一个未声明的变量(另一个工作簿是否在某处声明了它?在模块顶部?),这使它成为运行时变量
,代码首先以变量/空
的形式遇到,它不是一个有效的对象引用,可以使用is Nothing
进行检查。用适当的作为[type]
子句声明局部变量,[这个]问题会自行解决。使用选项Explicit
确保您已经声明了所有这些选项。
Dim rng As Range
Dim del As Range
If IsEmpty(del) Then