优秀的编程知识分享平台

网站首页 > 技术文章 正文

一招教你用 VBA 给 Excel 添加状态栏进度条

nanyue 2024-10-01 13:14:27 技术文章 6 ℃

在 Excel 里用 VBA 处理进行一些操作,比如填充数据、改变单元格格式等时候,当数据比较大就需要给用户一些提示,防止用户以为程序处于卡死状态。

一般我们可以在 Excel 的状态栏显示一些提示信息,如 “正在处理中...” 等来提示用户。其实这种情况下我们最好可以显示一个进度条给用户,可以很直观的显示当前的进度。但在 Excel 状态栏添加进度条技术上比较麻烦(不是不可以实现),所以这里我就给大家提供一个取巧的办法,用特殊的字符模拟出一个任务栏进度条(具体代码见文末):

'此代码只适用于 Excel 2013 及以后版本
Sub StatusBarProgressBar()
    Dim I As Long, xProgress As Long
    Dim xChar1 As String, xChar2 As String
    Dim xTimer As Single
    xChar1 = Application.WorksheetFunction.Unichar(9646)
    xChar2 = Application.WorksheetFunction.Unichar(9647)
    Application.StatusBar = ""
    Application.StatusBar = "正在处理: " & String(10, xChar2) & "(00%)"
    For I = 1 To 100000
        Application.ActiveSheet.Cells(I, 1) = I
        If ((I Mod 10000) = 0) Then
            xProgress = xProgress + 1
            Application.StatusBar = "正在处理: " & String(xProgress, xChar1) & String(10 - xProgress, xChar2) & Format(xProgress, "(&&0%)")
            DoEvents
        End If
    Next
    Application.StatusBar = "处理完成"
    xTimer = Timer
    While (Timer < (xTimer + 1))
        DoEvents
    Wend
    Application.StatusBar = ""
End Sub
最近发表
标签列表