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

And*_*lli 8 excel vba excel-vba

隐藏的工作表/工作簿对VBA代码中可以做的事情有一些限制,比如大多数SelectSelection语句,以及来自的任何内容ActiveSheet,但我似乎无法找到任何限制的列表.

Google,帮助系统中的内置文档以及MSDN的网站都让我失望.谁能指出我正确的方向?

编辑:打开工作簿

Set WB_Master = Workbooks.Open(Filename:=PATH_Master, ReadOnly:=False)
Run Code Online (Sandbox Code Playgroud)

然后隐藏着

WB_Master.Windows(1).Visible = False
Run Code Online (Sandbox Code Playgroud)

Pat*_*ald 14

从Visual Basic for Applications帮助:

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

我担心的帮助不大,我通过谷歌找不到其他的东西.

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

编辑:

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

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
Run Code Online (Sandbox Code Playgroud)

  • 我通常远离Select,除非绝对必要,但我的具体问题是尝试将背景颜色应用于工作簿上隐藏的工作簿而不是活动工作簿.尽管直接引用了工作簿,但只有在工作簿可见并激活时才有效. (2认同)

Jon*_*ell 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
Run Code Online (Sandbox Code Playgroud)

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