通常解冻窗格代码Excel VBA:解冻工作簿对象工作表的窗格?
ActiveWindow.FreezePanes = False
但说我有一个类型的工作簿的原始资料和String类型的SHEETNAME。例如
sourceBook.sheets(sheetName)
如何在不调用ActiveWindow之类的工作簿表单上解冻窗格?
通常解冻窗格代码Excel VBA:解冻工作簿对象工作表的窗格?
ActiveWindow.FreezePanes = False
但说我有一个类型的工作簿的原始资料和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
。
不幸的是,冻结窗格是一个窗口对象的方法,您要应用它的表单需要是活动表格。 这意味着您必须选择您想要冻结活动窗口上的窗格的单元格。
的代码添加到工作表的激活事件(例如,这是工作表Sheet1下的代码)
Option Explicit
Private Sub Worksheet_Activate()
ActiveWindow.FreezePanes = False
End Sub
好吧,我执行的是有冻结的窗格在纸张上排序的过程,如果是它抛出一个错误冻结 - 所以我必须解冻它。有没有办法解冻它并返回到之前活动的窗口?编辑:没关系,你的代码这样做。一会儿。 – KaliMa
实际上,它不...我把它遗漏了,因为你不想使用ActiveWindow。如果你想要这样做,只需将activeWindow首先存储为'dim ActiveW as window:set ActiveW = ActiveWindow',然后在最后'activeW.Activate' –
不幸的是我仍然有相同的问题 编辑:忍者' d再次 – KaliMa