Excel VBA:解冻工作簿对象工作表的窗格?

时间:2012-12-06 21:31:53

标签: excel vba

通常,解冻窗格的代码是

ActiveWindow.FreezePanes = False

但是说我有类型为Workbook的sourceBook和一个String类型的sheetName。例如

sourceBook.sheets(sheetName)

如何在不调用ActiveWindow等内容的情况下解冻该工作簿页面上的窗格?

3 个答案:

答案 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