通常解冻 Pane 的代码是
ActiveWindow.FreezePanes = False
但是假设我有 Workbook 类型的 sourceBook 和 String 类型的 sheetName。例如
sourceBook.sheets(sheetName)
如何在不调用 ActiveWindow 之类的东西的情况下解冻该工作簿工作表上的 Pane ?
最佳答案
这将从给定工作簿的每个窗口的每个工作表中删除 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
正如 Rick 所指出的,您不能在不激活窗口的情况下解冻 Pane 。但是您不必调用
ActiveWindow
。关于Excel VBA : Unfreezing panes of a workbook object's sheet?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13752987/