当前位置:   article > 正文

调试经验——使用VBA显示进度条 (Display Progress Bar with VBA)

vba显示进度条

需求:有时候运行VBA进行数据处理的时候,运行时间较长(四五十分钟甚至更长),如果能显示一个进度条的话让人比较安心。

今天在网上看到了网友的解决方案:

  1. '自定义的进度条,在状态栏显示
  2. Function GetProgress(curValue, maxValue)
  3. Dim i As Single, j As Integer, s As String
  4. i = maxValue / 20
  5. j = curValue / i
  6. For m = 1 To j
  7. s = s & "■"
  8. Next m
  9. For n = 1 To 20 - j
  10. s = s & "□"
  11. Next n
  12. GetProgress = s & FormatNumber(curValue / maxValue * 100, 2) & "%"
  13. End Function

然后,在主程序循环体内调用该函数:

  1. rs.Open sql, connXls, 1
  2. Dim p As Integer: p = 0
  3. Do While Not rs.EOF
  4. p = p + 1
  5. '在状态栏显示
  6. Application.StatusBar = GetProgress(p, rs.RecordCount)
  7. ……

最后,记得在程序使用以下语句恢复状态栏为系统默认状态,否则,进度条将一直显示在那里。

Application.Statusbar = False

补记:

看到了一种更简单的方式(仅显示数值,百分比),无需模拟进度条。个人感觉这种方式更轻量级一点,简单而实用!

  1. Dim x As Integer
  2. Dim MyTimer As Double
  3. 'Change this loop as needed.
  4. For x = 1 To 50
  5. ' Do stuff
  6. Application.StatusBar = "Progress: " & x & " of 50: " & Format(x / 50, "0%")
  7. Next x
  8. Application.StatusBar = False

参考文章:

https://www.cnblogs.com/gxlxzys/archive/2010/10/16/1852967.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/860752
推荐阅读
相关标签
  

闽ICP备14008679号