跳至主要内容

如何让Excel窗口始终保持在最前面?

Author: Xiaoyang Last Modified: 2025-07-21

当您在多任务处理时,是否曾因Excel窗口不断被其他应用程序隐藏在后面而感到麻烦?许多用户希望Excel工作簿窗口能够始终保持在前台,这样他们可以在使用其他程序(例如从浏览器或另一个桌面应用程序手动传输数字)的同时查阅或输入数据。此功能对于使用双显示器、进行演示或频繁在Excel与其他软件之间切换的用户尤其有用。

遗憾的是,Microsoft Excel本身并未提供使Excel窗口始终保持在其他窗口上方的内置设置或选项。无论您使用的是哪个版本,或者使用的是Office 32位还是64位,通过其标准界面都无法直接将Excel固定在所有其他打开的窗口之上。然而,有一个替代方案可以实现此功能。下面,您将找到适用于各种使用场景的VBA代码方法。

使用VBA代码让Excel窗口始终保持在最前面


使用VBA代码让Excel窗口始终保持在最前面

此VBA代码解决方案允许您将活动的Excel窗口固定在所有其他窗口之上,确保它始终可见且不会被其他应用程序窗口覆盖。无论您使用的是32位还是64位版本的Office,以下提供的VBA脚本均适用于这两个版本。这种方法特别适合高级Excel用户,或不允许安装额外软件的环境。

在继续之前,请保存您的工作,因为在运行宏时偶尔可能会发生意外错误或导致Excel重启。此外,请注意,此解决方案仅影响执行该宏的Excel窗口;其他实例不会自动保持在最前面。

1. 按住键盘上的ALT + F11键以启动Microsoft Visual Basic for Applications编辑器窗口。这是您可以输入和管理Excel工作簿VBA代码的环境。

2. 在VBA编辑器中,点击“插入”>“模块”以为您的工作簿添加一个新模块。然后,将以下VBA代码复制并粘贴到打开的“模块”窗口中:

VBA代码:让Excel窗口始终保持在最前面

'Update 20140909
#If Win64 Then
    Public Declare PtrSafe Function SetWindowPos _
        Lib "user32" ( _
            ByVal hwnd As LongPtr, _
            ByVal hwndInsertAfter As LongPtr, _
            ByVal x As Long, ByVal y As Long, _
            ByVal cx As Long, ByVal cy As Long, _
            ByVal wFlags As Long) _
    As Long
#Else
    Public Declare Function SetWindowPos _
        Lib "user32" ( _
            ByVal hwnd As Long, _
            ByVal hwndInsertAfter As Long, _
            ByVal x As Long, ByVal y As Long, _
            ByVal cx As Long, ByVal cy As Long, _
            ByVal wFlags As Long) _
    As Long
#End If
Public Const SWP_NOSIZE = &H1
Public Const SWP_NOMOVE = &H2
Public Const HWND_TOPMOST = -1
Public Const HWND_NOTOPMOST = -2
Sub ShowXLOnTop(ByVal OnTop As Boolean)
    Dim xStype As Long
    #If Win64 Then
        Dim xHwnd As LongPtr
    #Else
        Dim xHwnd As Long
    #End If
    If OnTop Then
        xStype = HWND_TOPMOST
    Else
        xStype = HWND_NOTOPMOST
    End If
    Call SetWindowPos(Application.hwnd, xStype, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE)
End Sub
Sub SetXLOnTop()
    ShowXLOnTop True
End Sub
Sub SetXLNormal()
    ShowXLOnTop False
End Sub

此代码使用系统级API调用来控制窗口的固定状态。请确保在您的Excel设置中启用了宏,以便VBA代码能够正常运行。如果出现“宏已被禁用”的消息,则可能需要更新您的Excel信任中心设置以允许宏执行。

3. 输入代码后,按F5键或点击VBA编辑器中的“运行”按钮。此时会弹出一个“”对话框,列出可用的宏。选择名为SetXLOnTop的宏,然后点击“运行”以执行它。这将会为当前的Excel窗口应用“始终保持在最前面”的状态。请参见下图:

a screenshot showing how to run the code

4. 宏运行完成后,您的Excel窗口应始终保持在所有其他已打开的应用程序之上,从而大大方便了在多个程序之间查阅或输入数据,而无需担心Excel窗口被隐藏。

此设置将持续生效,直到您手动将其还原。如果您最小化并恢复窗口,“始终保持在最前面”的状态通常会被保留,但关闭并重新打开Excel后需要再次运行该宏。

注意:如果您希望将Excel窗口恢复为普通状态,使其不再始终处于最前面,请重复激活过程:按F5键打开“”对话框,选择SetXNormal宏,并点击“运行”。您的Excel窗口将恢复正常行为。

故障排除提示:如果在运行宏时收到错误,请仔细检查您的宏安全设置,并确保所有宏代码都正确粘贴。某些企业环境可能会限制某些窗口管理操作,因此如果该方法未按预期工作,请咨询IT部门。此外,请确保您是以标准用户身份运行Excel;执行此任务通常不需要管理员权限。

如果您不想安装第三方软件并且熟悉使用Excel的内置脚本功能,那么此VBA解决方案是理想之选。但是,如果您经常需要固定来自多个应用程序的窗口,您可能更喜欢使用专门管理窗口位置的工具。


最佳办公效率工具

🤖 Kutools AI 助手:基于智能执行生成代码创建自定义公式分析数据并生成图表调用 Kutools 函数等功能,彻底改变数据分析方式…
热门功能查找、高亮或标记重复项 | 删除空行 | 合并不丢失数据的列或单元格 | 四舍五入 ...
高级 LOOKUP多条件 VLookup | 多值 VLookup | 多表查找 | 模糊查找 ....
高级下拉列表快速创建下拉列表 | 从属下拉列表 | 多选下拉列表 ....
列管理器添加指定数量的列 | 移动列 | 切换隐藏列的可见状态 | 比较区域和列 ...
精选功能网格聚焦 | 设计视图 | 增强编辑栏 | 工作簿与工作表管理器 | 资源库(自动文本) | 日期提取 | 合并数据 | 加密/解密单元格 | 按列表发送电子邮件 | 超级筛选 | 特殊筛选(筛选粗体/斜体/删除线...)...
排名前 15 的工具集12 种文本 工具添加文本删除特定字符等) | 50 多 种图表 类型甘特图等) | 40 多种实用 公式基于生日计算年龄等) | 19 种插入 工具插入二维码根据路径插入图片等) | 12 种转换 工具小写金额转大写汇率转换等) | 7 种合并与分割 工具高级合并行分割单元格等) | 还有更多...

使用 Kutools for Excel 提升您的 Excel 技能,体验前所未有的高效。 Kutools for Excel 提供超过 300 种高级功能来提高生产力并节省时间。 单击此处获取您最需要的功能...


Office Tab 将标签式界面引入 Office,让您的工作更加轻松

  • 在 Word、Excel、PowerPoint 中启用标签式编辑和阅读
  • 在同一窗口的新标签页中打开和创建多个文档,而不是在新窗口中进行操作。
  • 将您的生产力提升 50%,每天为您减少数百次鼠标点击!