2009-05-21 78 views
8

隐藏的工作表/工作簿对可以在VBA代码中做什么有一些限制,如大多数SelectSelection语句以及来自ActiveSheet的任何内容,但我似乎无法找到任何限制条件的列表。在隐藏的工作表或工作簿上可以执行哪些Excel VBA操作?

Google,帮助系统中的内置文档和MSDN网站都让我失望。任何人都可以将我指向正确的方向吗?

编辑: 打开工作簿与

Set WB_Master = Workbooks.Open(Filename:=PATH_Master, ReadOnly:=False) 

,然后隐藏着

WB_Master.Windows(1).Visible = False 
+0

您可以详细说明如何打开工作簿并使其不可见吗? – 2009-05-21 16:48:57

回答

13

从Visual Basic for Applications帮助:

当一个对象是隐藏的,它从屏幕上移除,其Visible属性设置为False。用户无法访问隐藏对象的控件,但它们以编程方式可用于正在运行的应用程序,可用于通过自动化与应用程序通信的其他进程以及Windows中的计时器控件事件。

恐怕没有太大的帮助,我无法通过Google找到其他任何东西。

正如您所说的,Select方法和Selection属性在隐藏的工作表上不起作用,但它们应该在隐藏的Workbook上工作。 (如果我错了,请纠正我的错误。)但是,通常情况下,无论如何选择工作表中的范围并不总是那么高效,您最好使用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 
+2

我通常远离选择,除非绝对必要,但我的具体问题是尝试将背景颜色应用于工作簿上既隐藏又不是活动工作簿的单元格。尽管直接提到了工作簿,但只有在工作簿可见并激活时才有效。 – 2009-05-21 14:45:30

9

您可以取消隐藏他们绕过任何限制的隐藏工作表没有用户意识到它,做你需要的任何东西,然后再把它们隐藏起来。

此示例假定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,这将防止它们被列在用户如果他们试图通过菜单或功能区取消隐藏它们。

相关问题