在 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