通常,解冻窗格的代码是
ActiveWindow.FreezePanes = False
但是说我有类型为Workbook的sourceBook和一个String类型的sheetName。例如
sourceBook.sheets(sheetName)
如何在不调用ActiveWindow等内容的情况下解冻该工作簿页面上的窗格?
答案 0 :(得分:2)
这将从给定工作簿的每个窗口的每个工作表中删除FreezePanes,它还确保相同的工作表在运行代码之前处于活动状态:
Dim w As Window
Dim activews As Worksheet, ws As Worksheet
For Each w In sourceBook.Windows
w.Activate
If activews Is Nothing Then
Set activews = w.ActiveSheet
End If
For Each wsv In w.SheetViews
wsv.Sheet.Activate
w.FreezePanes = False
Next
activews.Activate
set activews = nothing
Next
正如里克指出的那样,如果不激活窗户,就无法解冻窗格。但是,您不必致电ActiveWindow
。
答案 1 :(得分:1)
不幸的是,Freeze Panes是一个窗口对象的方法,您要应用它的工作表需要是活动表。 这意味着您只需选择要在活动窗口上冻结窗格的单元格。
答案 2 :(得分:0)
将代码添加到工作表的激活事件中(例如,这是Sheet1下的代码)
Option Explicit
Private Sub Worksheet_Activate()
ActiveWindow.FreezePanes = False
End Sub