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