AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1653458
Accepted
Bob Weeks
Bob Weeks
Asked: 2021-06-04 06:23:57 +0800 CST2021-06-04 06:23:57 +0800 CST 2021-06-04 06:23:57 +0800 CST

Excel,创建具有相同设置的新窗口

  • 772

为现有工作簿创建新窗口时,某些设置不会转移到新窗口。对我来说最重要的是冻结窗格、行和列设置,以及网格线的可见性。其他人报告未观察到其他设置。有些人已经描述了使用宏的解决方案,但这对于我希望有一个简单解决方案的东西来说似乎是额外的复杂性。

这是使用 View | 现有工作簿上的新窗口命令。

microsoft-excel
  • 1 1 个回答
  • 357 Views

1 个回答

  • Voted
  1. Best Answer
    harrymc
    2021-06-04T06:47:55+08:002021-06-04T06:47:55+08:00

    这是 Excel 的工作方式,可能是错误或“功能”。它无法使用 Excel GUI 解决,因此需要 VBA 宏。

    文章 Gridlines & Freeze Panes Settings Lost in New Window – How to Fix It 描述了该问题,并将解决方案包含为 VBA 宏,该宏执行以下操作:

    • 创建新窗口
    • 循环浏览新窗口中的所有工作表并应用原始窗口中的以下内容:网格线、冻结窗格和标题。
    • 在原始窗口和新窗口中激活原始工作表
    • 在垂直并排分屏视图中排列窗口
    • 滚动到工作簿中的活动选项卡,以便您查看它。

    万一以后文章消失了,这里是VBA代码:

    Sub New_Window_Preserve_Settings()
    'Create a new window and apply the grid line settings
    'for each sheet.
    
    Dim ws As Worksheet
    Dim i As Long
    Dim iWinCnt As Long
    Dim bGrid As Boolean
    Dim bPanes As Boolean
    Dim bHeadings As Boolean
    Dim iSplitRow As Long
    Dim iSplitCol As Long
    Dim iActive As Long
    Dim iZoom As Long
    Dim sSep As String
    
      Application.ScreenUpdating = False
    
      'Store the active sheet
      iActive = ActiveSheet.Index
    
      'Create new window
      ActiveWindow.NewWindow
      iWinCnt = ActiveWorkbook.Windows.Count
      
      'Set the separator based on the version of Excel
      'Office 365 now using a dash
      If InStr(":", ActiveWorkbook.Name) > 0 Then
        sSep = ":"
      Else
        sSep = "  -  "
      End If
      
      'Loop through worksheets of original workbook
      'and apply grid line settings to each sheet.
      For Each ws In ActiveWorkbook.Worksheets
        Windows(ActiveWorkbook.Name & sSep & "1").Activate
        ws.Activate
        
        'Store the properties
        bGrid = ActiveWindow.DisplayGridlines
        bHeadings = ActiveWindow.DisplayHeadings
        iZoom = ActiveWindow.Zoom
        
        'Get freeze panes
        bPanes = ActiveWindow.FreezePanes
        If bPanes Then
           iSplitRow = ActiveWindow.SplitRow
           iSplitCol = ActiveWindow.SplitColumn
        End If
        
        'Activate the new window and sheet in loop
        Windows(ActiveWorkbook.Name & sSep & iWinCnt).Activate
        Worksheets(ws.Index).Activate
        
        'Set properties
        With ActiveWindow
          .DisplayGridlines = bGrid
          .DisplayHeadings = bHeadings
          .Zoom = iZoom
          If bPanes Then
            .SplitRow = iSplitRow
            .SplitColumn = iSplitCol
            .FreezePanes = True
          End If
        End With
      Next ws
        
      'Activate original active sheet for the new window
      Worksheets(iActive).Activate
      
      'Activate the original active sheet for the original window
      Windows(ActiveWorkbook.Name & sSep & "1").Activate
      Worksheets(iActive).Activate
      
      'Split Screen View (optional)
      'The following section can be commented out if you don't want split screen.
      
        'Turn screen updating on for split screen
        Application.ScreenUpdating = True
         
        For i = iWinCnt To 1 Step -1
          Windows(ActiveWorkbook.Name & sSep & i).Activate
        Next i
        
        'Split view side-by-side vertical
        ActiveWorkbook.Windows.Arrange ArrangeStyle:=xlVertical
        
        'Scroll to active tab in original window
        ActiveWindow.ScrollWorkbookTabs Position:=xlFirst
        ActiveWindow.ScrollWorkbookTabs Sheets:=iActive
        
        'Scroll to active tab in new window
        Windows(ActiveWorkbook.Name & sSep & iWinCnt).Activate
        DoEvents
        ActiveWindow.ScrollWorkbookTabs Position:=xlFirst
        ActiveWindow.ScrollWorkbookTabs Sheets:=iActive
      
    End Sub
    

    该文章还包含一个 VBA 宏来关闭其他窗口,因此它们不会被错误地保存并覆盖原始工作簿:

    Sub Close_Additional_Windows()
    'Close additional windows and maximize original
    
    Dim i As Long
    Dim sSep As String
    
      'Set the separator based on the version of Excel
      'Office 365 now using a dash
      If InStr(":", ActiveWorkbook.Name) > 0 Then
        sSep = ":"
      Else
        sSep = "  -  "
      End If
      
      If ActiveWorkbook.Windows.Count > 1 Then
        For i = ActiveWorkbook.Windows.Count To 2 Step -1
          Windows(ActiveWorkbook.Name & sSep & i).Close
        Next i
      End If
      
      Windows(ActiveWorkbook.Name).WindowState = xlMaximized
    
    End Sub
    

    本文还包含有关在工作簿中安装宏的部分,以防您以前从未使用过 VBA。

    • 2

相关问题

  • 带有“和”运算符的 Excel 数据透视表

  • 如何对整列使用 Excel 的 LENGTH 函数?

  • Excel 数组(2 个变量)

  • 如何从 WSL 打开 office 文件

  • VBA根据文件名重命名工作表

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 为什么通过电缆(同轴电缆)的千兆位/秒 Internet 连接不能像光纤一样提供对称速度? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve