如何closures使用VBA的Excel中的网格线,而不使用ActiveWindow
我有一个VBAmacrosExcel 2013中生成一个单独的Excel报告。 在这个创build的excel报告中,我想closuresGridLines。
我碰到的唯一代码就是这样的
ActiveWindow.DisplayGridlines = False
但是,这个excel是在后台生成的,
Dim appObject As New Excel.Application appObject.Visible = False
这意味着这个报告不是ActiveWindow。 是否有不使用ActiveWindow对象closures网格线的替代方法?
如果您有工作簿的参考,则可以遍历其集合中的所有Windows。 如果应用程序不可见,则只能得到1,但比试图对索引进行硬编码更安全:
Private Sub ToggleGridLines(target As Workbook) Dim wnd As Window For Each wnd In target.Windows wnd.DisplayGridlines = False Next End Sub
请注意,这将设置更改工作簿中活动工作表上的显示 – 为什么这是窗口的属性,而不是工作表超出了我的范围。
编辑:
感谢@Tim分享的链接,我意识到我将完全隔开SheetViews
集合。 这应该closures任意Worksheet
对象的网格线:
Private Sub TurnOffGridLines(target As Worksheet) Dim view As WorksheetView For Each view In target.Parent.Windows(1).SheetViews If view.Sheet.Name = target.Name Then view.DisplayGridlines = False Exit Sub End If Next End Sub
ActiveWindow是Windows对象集合的成员。 与任何集合一样,只需按名称而不是指定活动窗口来引用实际窗口。 例如
Windows("My Workbook.xls").DisplayGridlines = False