Excel VBA:解冻工作簿对象的工作表的窗格?
通常解冻窗格的代码是
ActiveWindow.FreezePanes = False
但是说我有types工作簿的sourceBook和types为String的sheetName。 例如
sourceBook.sheets(sheetName)
如何在不调用ActiveWindow之类的工作簿表单上解冻窗格?
这将从给定工作簿的每个窗口的每个工作表中删除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
。
不幸的是,“冻结窗格”是一个窗口对象的方法,您要在其上应用它的表格需要是活动表格。 这意味着你将不得不select你想要冻结活动窗口上的窗格的单元格。
将代码添加到工作表的激活事件(例如,这是Sheet1下的代码)
Option Explicit Private Sub Worksheet_Activate() ActiveWindow.FreezePanes = False End Sub