Worksheet_Activate代码无法仅在1个工作表中运行

时间:2015-09-02 20:06:27

标签: vba excel-vba excel-2010 excel

我有一个好奇的VBA问题。它有简单的代码来隐藏未使用的行。它对我有好处,(我实际上没有做到)并且修复了所有错误。

但是,现在它已停止仅在一个工作表中运行工作表激活代码。其他工作表的代码运行正常,几乎相同(list3而不是list1作为命名范围,而EntireColumn而不是EntireRow)。

当我打开Visual Basic并尝试手动运行工作表激活代码时,它会给我这个错误:

  

编译错误:对象库无效或包含对无法找到的对象定义的引用。

我不知道从哪里开始尝试修复它,特别是当Google似乎没有产生任何结果时,即使使用新的居高临下的徽标也是如此。

Private Sub Worksheet_Activate()

    Application.ScreenUpdating = False

    Dim cell As Range

    For Each cell In Range("list3") 'This changes to list1 to list4
        cell.EntireRow.Hidden = cell.Value2 = ""
    Next cell

    Application.ScreenUpdating = True

End Sub

修改

现在有两个工作表不起作用,我想知道它是否与"EntireRow.Hidden"有关。

1 个答案:

答案 0 :(得分:0)

未激活是失败,但是停用。在激活excel之前必须停用活动工作表,因此如果只有一个工作表...无法停用!

您可以尝试一个技巧,通过激活最小化然后最大化。会产生同样的效果,如果你把它们放在同一个声明中,你甚至都不会感到休息。