跳至主要内容

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

Author: Xiaoyang Last Modified: 2025-07-31

当您在多任务处理时,是否觉得Excel窗口总是被其他应用程序隐藏在后面很麻烦?许多用户常常希望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 解决方案是理想的选择。但是,如果您经常需要固定来自多个应用程序的窗口,您可能更喜欢专用的工具来管理窗口位置。


最佳 Office 办公效率工具

🤖 Kutools AI 助手:基于智能执行,彻底革新数据分析 生成代码创建自定义公式分析数据并生成图表调用 Kutools Functions
热门功能:查找、选中项的背景色或标记重复项|删除空行|合并列或单元格且不丢失数据|四舍五入(无公式)...
高级 LOOKUP多条件查找 (VLookup)多值查找 (VLookup)多表查找 (VLookup Across Multiple Sheets)模糊查找 (Fuzzy Lookup)...
高级下拉列表快速创建下拉列表依赖型下拉列表多选下拉列表...
列管理器添加指定数量的列移动列切换隐藏列的可见状态比较区域及列...
特色功能网格聚焦设计视图增强编辑栏工作簿 & 工作表管理器资源库(自动文本)|日期提取合并数据加密/解密单元格按列表发送电子邮件超级筛选特殊筛选(筛选粗体/倾斜/删除线等)...
热门15 大工具集12 款文本工具添加文本删除特定字符等)50+ 种图表 类型甘特图等)40+ 实用公式基于生日计算年龄等)19 款插入工具插入二维码按路径插入图片等)12 种转换工具小写金额转大写汇率转换等)7 款合并与分割工具高级合并行分割单元格等)...更多精彩等你发现
使用 Kutools,支持您的首选语言——包括英语、西班牙语、德语、法语、中文及40 多种其他语言!

用 Kutools for Excel 加速你的 Excel 技能,体验前所未有的高效办公。 Kutools for Excel 提供300 多项高级功能,助您提升效率,节省大量时间。点击此处,获取你最需要的功能...


Office Tab 为 Office 带来标签式界面,让你的工作更加轻松

  • 在 Word、Excel、PowerPoint 启用标签式编辑和阅读
  • 在同一窗口的新标签中打开和创建多个文档,无需新建窗口。
  • 办公效率提升50%,每天帮你减少上百次鼠标点击!