tem*_*ope 9 excel vba excel-vba
我在Excel 2013上有一个VBA宏,它生成一个单独的Excel报告.在这个创建的excel报告中,我想关闭GridLines.
我遇到的唯一一段代码就是如下所示
ActiveWindow.DisplayGridlines = False
Run Code Online (Sandbox Code Playgroud)
但是,这个excel是在后台生成的,即
Dim appObject As New Excel.Application
appObject.Visible = False
Run Code Online (Sandbox Code Playgroud)
这意味着此报告不是ActiveWindow.有没有使用ActiveWindow对象关闭网格线的替代方法?
Com*_*ern 10
如果您有对工作簿的引用,则可以遍历其集合中的所有Windows.如果应用程序不可见,您应该只获得1,但它比尝试对索引进行硬编码更安全:
Private Sub ToggleGridLines(target As Workbook)
Dim wnd As Window
For Each wnd In target.Windows
wnd.DisplayGridlines = False
Next
End Sub
Run Code Online (Sandbox Code Playgroud)
请注意,这将设置更改工作簿中活动工作表上的显示 - 为什么这是窗口的属性而不是工作表超出我的范围.
编辑:
感谢@Tim分享的链接,我意识到我已完全隔离了这个SheetViews系列.这应该关闭任意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
Run Code Online (Sandbox Code Playgroud)