我试图确定为什么“ Cells.Select”(用于选择工作表中的所有单元格)将在宏中工作,但是完全相同的命令将导致运行时错误:1004。加载项设置正确吗?在运行宏与运行外接程序之间,代码的执行方式是否有所不同?
这还将适用于任何使用“单元格”的命令,例如以下...
If Not IsEmpty(Cells(a, 1)) Then
Cells(a, 3) = Num
End If
请注意,Num的值是一个有效的整数,但我要在此处说明的一点是,当条件为TRUE时,实际单元格值未设置为Num。
提前谢谢
答案 0 :(得分:2)
使用您的示例以及在评论部分中提供的其他信息,您的代码:
If Not IsEmpty(Cells(a, 1)) Then
Cells(a, 3) = Num
End If
最好是:
With Application.ActiveSheet
If Not IsEmpty(.Cells(a, 1)) Then
.Cells(a, 3) = Num
End If
End With
此外,除非确实需要,否则尝试拒绝使用.Select
。检出:this excellent article
答案 1 :(得分:0)
ThisWorkbook 将直接引用代码所在的工作簿。可能有一个隐藏的工作表作为自己自己做的Addin的一部分,这是曾经在其中使用ThisWorkbook的唯一原因一个插件。
使用外接程序,您最经常要引用ActiveWorkbook,以将宏应用于外接程序需要处理的任何工作簿。还可以在引用工作表的地方使用ActiveSheet。
将代码更改为ActiveSheet.Cells.Select