Excel宏与Excel加载项和单元格选择

时间:2019-02-28 14:46:06

标签: excel vba

我试图确定为什么“ Cells.Select”(用于选择工作表中的所有单元格)将在宏中工作,但是完全相同的命令将导致运行时错误:1004。加载项设置正确吗?在运行宏与运行外接程序之间,代码的执行方式是否有所不同?

这还将适用于任何使用“单元格”的命令,例如以下...

If Not IsEmpty(Cells(a, 1)) Then

    Cells(a, 3) = Num

End If

请注意,Num的值是一个有效的整数,但我要在此处说明的一点是,当条件为TRUE时,实际单元格值未设置为Num。

提前谢谢

2 个答案:

答案 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