MICROSOFT

EP01. “StatusBar Property 状态栏进度提示”

首页 Microsoft 工具 Excel · VBA · Application Object · EP01
约 4 分钟· #EP01#Excel#Application Object
🔒 登录后可标记已读
  • Application.StatusBar 能把文字显示在 Excel 窗口最下方的状态栏
  • 常用来在宏跑很久的时候,让使用者知道目前进度到哪、还没当机
  • 用一个填充随机数字的例子示范怎么显示百分比进度
  • 前置知识:嵌套 For 循环的基本用法

重点内容


适用版本

桌面版通用(Excel 365 / 2021 / 2019 等)。


完整代码

Dim i As Integer, j As Integer, pctCompl As Integer

For i = 1 To 20
    For j = 1 To 5
        Cells(i, j).Value = WorksheetFunction.RandBetween(20, 100)
        pctCompl = (i - 1) * 5 + (j * 1)
        Application.StatusBar = "Importing Data.. " & pctCompl & "% Completed"
        Application.Wait Now + TimeValue("00:00:01")
    Next j
Next i

Application.StatusBar = False

逻辑说明

  • 用嵌套循环把 A1:E20 填满 20 到 100 之间的随机数字
  • pctCompl 算出目前跑到第几格,换算成百分比
  • Application.StatusBar = "..." 把这个百分比文字显示在状态栏

[截图:宏运行过程中 Excel 窗口最左下角状态栏显示 "Importing Data.. 42% Completed" 这类进度文字]

  • Application.Wait 让每一步暂停 1 秒,方便观察进度变化(实际用在真正耗时的操作时不需要这行)
  • 📌 循环跑完后,一定要把 Application.StatusBar 设回 False,让状态栏恢复正常显示,不然会一直卡在最后一次的进度文字

学完你会

  • ✅ 用 Application.StatusBar 在状态栏显示自定义文字
  • ✅ 算出目前进度换算成百分比,实时更新状态栏内容
  • ✅ 知道循环结束后要把 Application.StatusBar 设回 False 恢复正常显示

常见错误

  • 循环结束后忘记把 Application.StatusBar 设回 False,状态栏卡住不会恢复正常
  • Application.Wait 这行也照抄到正式代码里,导致宏运行速度被不必要地拖慢
  • 百分比公式算错,状态栏显示的进度跟实际跑的进度对不上

Sources

Blog / Website:

  1. StatusBar