如何使用Excel上的VBA宏在不同的图纸上应用不同的冻结窗格

如何使用Excel上的VBA宏在不同的图纸上应用不同的冻结窗格,vba,excel,Vba,Excel,我目前有一个包含多个工作表的工作簿,我正在尝试将冻结窗格功能应用于我的大多数不同工作表。然而,我的一张工作表我想对其应用不同的规则,因此它只冻结前2列,而不是像所有其他工作表一样冻结7列 我的“Pivots”选项卡是我要应用单独规则的选项卡 我的代码是: Sub FreezePanes() sheetlist = Array("1", "2", "3", "4", "5", "6", "7", "8") 'this is used so that all sheets freeze

我目前有一个包含多个工作表的工作簿,我正在尝试将冻结窗格功能应用于我的大多数不同工作表。然而,我的一张工作表我想对其应用不同的规则,因此它只冻结前2列,而不是像所有其他工作表一样冻结7列

我的“Pivots”选项卡是我要应用单独规则的选项卡

我的代码是:

  Sub FreezePanes()

  sheetlist = Array("1", "2", "3", "4", "5", "6", "7", "8")
  'this is used so that all sheets freeze

For i = LBound(sheetlist) To UBound(sheetlist)
     Worksheets(sheetlist(i)).Activate
     ' The above is the loop that will go through all the different items in the array to direct it at each worksheet

     Columns("E:E").Columns.Group
     Columns("H:N").Columns.Group 'to change
     Columns("R:S").Columns.Group 'to change

     Columns("H:H").Select
     ActiveWindow.FreezePanes = True
    'code to freeze column H on those particular items

    Range("A7").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.AutoFilter
    'code to apply filter on 

ActiveSheet.Outline.ShowLevels RowLevels:=1, ColumnLevels:=1

  Next

 Worksheets("Pivots").Activate
 Columns("A:A").Select
 ActiveWindow.FreezePanes = True
'code to apply freeze panes only on first two columns
End Sub
我还有下面的代码可以帮助拆分它,但它看起来并不整洁

  Sub test()

  Worksheets("Pivots").Activate
  ActiveWindow.SplitColumn = 2
  ActiveWindow.SplitRow = 0

  End Sub

我设法找出了问题所在

现在一切都好了

 Worksheets("Pivots").Activate
 Columns("C:C").Select
 ActiveWindow.FreezePanes = True
'code to apply freeze panes only on first two columns
 End Sub

,确保明确给出
列()和
范围()的工作表s@BruceWayne-您只能冻结ActiveWindow上的窗格,因此每个工作表至少需要一次激活。@Jeeped虽然这是正确的,但从长远来看,最好避免使用它。(例如,在OP的回答中,他使用了
。选择本可以轻松避免的
。我明白你的意思,是的,冻结窗格无法避免使用
ActiveWindow
,但我仍然认为提醒他尽量避免使用这些特定元素是一件好事