为了账号安全,请及时绑定邮箱和手机立即绑定

在Excel VBA中强制屏幕更新

在Excel VBA中强制屏幕更新

胡说叔叔 2019-12-05 15:55:26
我的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我正在使用Excel 2003。
查看完整描述

3 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

更改文本或格式后,有时工作表中的文本框不会更新,甚至DoEvent命令也无济于事。


由于Excel中没有命令以刷新用户表单的方式刷新工作表,因此有必要使用技巧来强制Excel更新屏幕。


以下命令似乎可以解决问题:


- ActiveSheet.Calculate    

- ActiveWindow.SmallScroll    

- Application.WindowState = Application.WindowState


查看完整回答
反对 回复 2019-12-05
?
暮色呼如

TA贡献1853条经验 获得超9个赞

具体来说,如果您正在处理UserForm,则可以尝试Repaint方法。如果您在表单中使用事件触发器,则可能会遇到DoEvents问题。例如,函数运行时按下的任何键都将由DoEvents发送。键盘输入将在屏幕更新之前进行处理,因此,如果要通过按住键盘上的箭头键之一来更改电子表格上的单元格,则单元格更改事件将在主功能完成之前继续触发。


在某些情况下,不会刷新用户窗体,因为DoEvents会触发事件。但是,即使另一个事件紧接在前一个事件之后,Repaint也会更新UserForm,并且用户将在屏幕上看到更改。


在UserForm代码中,它很简单:


Me.Repaint


查看完整回答
反对 回复 2019-12-05
  • 3 回答
  • 0 关注
  • 1438 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信