【分享成果,随喜正能量】不管什么时候,我们一定要学会构建自己的价值。如果你没有价值,那么你随时可能被取代。
《VBA之Excel应用》是非常经典的,是我推出的第七套教程,定位于初级。这套教程无论是理论知识还是具体应用,内容都非常丰富,同时在讲解的过程中我会从我多年实践的角度给大家以不经意间的指导,让大家在不知觉间会更好的利用VBA这个工具。是的,代码习惯非常重要。
这套教程从简单的录制宏开始讲解,一直到窗体的搭建,内容丰富,实例众多。大家可以非常容易的掌握相关的知识,这套教程共三册,十七章,都是我们在利用EXCEL工作过程中需要掌握的知识点,希望大家能掌握利用。今日讲解的内容是“VBA之EXCEL应用”的第十四章“应用程序对象(Application Object)”的第5节:利用状态栏显示程序的运行进度
第五节 利用状态栏显示程序的运行进度
大家好,这讲继续讲解应用程序的对象。这讲的内容是状态栏的应用,让状态栏显示程序的进度。应用这讲的内容可以提高代码的可视性,也可以提高代码的趣味性。
1 Application.StatusBar属性
这个属性返回或设置状态栏中的文字。
语法:expression.StatusBar
其中expression表示 Application 对象的变量。
如果 Microsoft Excel 控制状态栏,则本属性返回 False。 若要恢复默认的状态栏文字,可将本属性设为 False,这在状态栏处于隐藏状态时也起作用。
应用示例:本示例在打开某工作簿之前将状态栏文字设为“Please be patient...”,然后将状态栏恢复为默认文字。
oldStatusBar = Application.DisplayStatusBar
Application.DisplayStatusBar = True
Application.StatusBar = "Please be patient..."
Workbooks.Open filename:="***" ’要打开的工作簿
Application.StatusBar = False
Application.DisplayStatusBar = oldStatusBar
2 状态栏显示程序的运行进度的代码代码解读
为了让状态栏显示某程序的进展情况,我们可以让状态栏显示程序的运行进度。我们看下面的代码:
Sub mynzI() '用状态栏显示程序的进度
Cells.Clear
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 = "程序已运行.. " & pctCompl & "%百分比"
Application.Wait Now + TimeValue("00:00:01")
Next
Next
Application.StatusBar = False
End Sub
代码截图:

代码讲解:上述代码将在20行5列的所有单元格中填入20到100间的随机数。在填的过程中在状态栏中显示进度。
1) Cells(i, j).Value = WorksheetFunction.RandBetween(20, 100) 在单元格中填入随机数。
2) pctCompl = (i - 1) * 5 + (j * 1) 获取以填数据的单元格数
3) Application.StatusBar = "程序已运行.. " & pctCompl & "%百分比" 在状态栏中显示的字符串。
4)Application.Wait Now + TimeValue("00:00:01") 延迟程序1秒钟以期望好的视觉效果。
5)Application.StatusBar = False 关闭状态栏
3 状态栏显示程序的运行进度的实际效果
我们点击运行按钮:

我们看到此时在状态栏的下面显示程序的运行进度。我们可以在任何时候通过按Esc或Ctrl + Break来中断一个宏。
今日内容回向:
1) Application.StatusBar的作用是什么?
2) 如何通过状态栏显示程序的运行进度?

本讲内容参考程序文件:工作簿14.xlsm