【问题标题】:Macro to Freeze Panes (Top Row) Not Working冻结窗格(顶行)的宏不起作用
【发布时间】:2022-01-05 21:04:11
【问题描述】:

我录制了一个宏来冻结窗格,但它没有按预期工作。它在第二行冻结并隐藏第一行。帮助。我使用的是 Excel 2007。代码如下:

' 冻结疼痛 - 第一行

With ActiveWindow
    .SplitColumn = 0
    .SplitRow = 1
End With
ActiveWindow.FreezePanes = True

【问题讨论】:

  • 2013 年为我工作。
  • 运行时哪个单元格处于活动状态是否重要?

标签: excel excel-2007 vba


【解决方案1】:

我发现这段代码运行良好:

Sub Freeze_Top_Panes()
   Application.ScreenUpdating = False

   Rows("2:2").Select
   ActiveWindow.FreezePanes = True

   Application.ScreenUpdating = True

End Sub

要为工作簿中的所有工作表实现此目的,请尝试以下操作:

Sub Freeze_All()
Dim Ws As Worksheet
Application.ScreenUpdating = False
For Each Ws In Application.ActiveWorkbook.Worksheets
    Ws.Activate
    With Application.ActiveWindow
        .FreezePanes = True
    End With
Next
Application.ScreenUpdating = True
End Sub

我不确定这是否只影响 Excel 2007(因为我还没有在其他版本上测试过),但您似乎必须关闭屏幕更新才能使冻结窗格功能与 VBA 一起使用。不知道为什么会这样。

【讨论】:

    【解决方案2】:

    如果你想冻结第一行/列,但屏幕上没有显示第一行/列,宏不会按预期冻结第一行/列。

    要解决此问题,您必须使用 ScrollRow(或 Scrollcolumn)属性。

    Worksheets(1).Cells(1, 1).Select
    
    With ActiveWindow
        If .FreezePanes Then .FreezePanes = False
        .ScrollRow = 1
        .ScrollColumn = 1
        .SplitColumn = 5
        .SplitRow = 5
        .FreezePanes = True
    End With
    

    我建议你附上 sn-p(在第 5 行和第 5 列之后冻结)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-13
      • 1970-01-01
      • 2013-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多