隐藏的工作表或工作簿上可以执行哪些Excel VBA操作?

时间:2009-05-21 12:18:57

标签: excel vba excel-vba

隐藏的工作表/工作簿对VBA代码中可以执行的操作有一些限制,例如大多数SelectSelection语句以及来自ActiveSheet的任何内容,但我似乎无法看到找到任何限制的清单。

谷歌,帮助系统中的内置文档以及MSDN的网站都让我失望了。有人能指出我正确的方向吗?

编辑:

打开工作簿
Set WB_Master = Workbooks.Open(Filename:=PATH_Master, ReadOnly:=False)

然后用

隐藏
WB_Master.Windows(1).Visible = False

2 个答案:

答案 0 :(得分:13)

从Visual Basic for Applications帮助:

  

隐藏对象时,它将从屏幕上删除,其Visible属性设置为False。用户无法访问隐藏对象的控件,但它们可通过编程方式提供给正在运行的应用程序,可通过自动化与Windows应用程序进行通信的其他进程,以及Timer控件事件。

我担心的帮助不大,而且我在谷歌找不到其他的东西。

正如您所说,Select方法和Selection属性不适用于隐藏的工作表,但它们应该在隐藏的工作簿上工作。 (如果我错了,请纠正我。)一般情况下,无论如何选择工作表中的范围并不总是那么有效,你最好使用Range属性(它可以在隐藏的工作表上工作)。

编辑:

即使工作表不可见,以下代码也会将A1:A8的颜色更改为青色:

Dim book2 As Workbook
Set book2 = Workbooks.Open("C:\Book2.xls")

book2.Worksheets("Sheet1").Visible = False
book2.Windows(1).Visible = False

With book2.Worksheets("Sheet1").Range("A1:E8").Interior
    .ColorIndex = 8
    .Pattern = xlSolid
    .PatternColorIndex = xlAutomatic
End With

book2.Windows(1).Visible = True
book2.Worksheets("Sheet1").Visible = True

答案 1 :(得分:10)

你可以通过在没有用户意识到的情况下取消隐藏它们,做任何你需要的事情,然后再次隐藏它们来解决隐藏工作表的任何限制。

此示例假定Sheet2已隐藏。

Sub DoStuffToAHiddenSheetWithoutTheUserKnowingIt()
    'turns off screen repainting so the user can't see what you're doing
    'incidentally, this dramatically speeds up processing of your code
    Application.ScreenUpdating = False
    'note that if you're stepping through your code, screenupdating will be true anyway

    'unhide the sheet you want to work with
    Sheets("sheet2").Visible = True
        'do whatever you want here, including selecting cells if you want
        'Scagnelli is right though, only select cells if you have to

    'when you're finished, hide the sheet again
    Sheets("sheet2").Visible = False

    'make sure you turn screenupdating back on, or Excel will be useless
    Application.ScreenUpdating = True
End Sub

如果您希望隐藏您的工作表,另一个有用的技巧是将它们设置为xlVeryHidden,如果他们试图通过菜单或功能区取消隐藏它们,将阻止它们被列入用户。