我的Excel工具执行一项长任务,我试图通过在状态栏或工作表中的某个单元格中提供进度报告来对用户表示友好,如下所示.但屏幕不刷新,或在某些时候停止刷新(例如33%).任务最终完成但进度条无用.
我该怎么做才能强制更新屏幕?
For i=1 to imax ' imax is usually 30 or so
fractionDone=cdbl(i)/cdbl(imax)
Application.StatusBar = Format(fractionDone, "0%") & "done..."
' or, alternatively:
' statusRange.value = Format(fractionDone, "0%") & "done..."
' Some code.......
Next i
Run Code Online (Sandbox Code Playgroud)
我正在使用Excel 2003.
我已经找到了很多用几种语言来做这个的例子,但没有一个是VBA特有的.这个问题,如何使用进度条下载VB6中的多个文件?,解决了在VB6中执行此操作的三种不同方法.
这些方法都不适合我,因为:
上面的2号似乎是最有希望的.我想知道我是否可以在我的VBA项目中使用类模块创建IBindStatusCallback接口?
或者可能使用上面的数字3提供可用于提供当前进度的属性/方法.任何帮助深表感谢.
这将是我的代码,但如果我有超过5000行和1列,则需要一生.有没有办法减少查询时间?
Sub InsertRows()
Dim numRows As Integer
Dim r As Long
Application.ScreenUpdating = False
r = Cells(Rows.Count, "A").End(xlUp).Row
numRows = 11
For r = r To 1 Step -1
ActiveSheet.Rows(r + 1).Resize(numRows).Insert
Next r
Application.ScreenUpdating = True
End Sub
Run Code Online (Sandbox Code Playgroud)