问题描述
我正在尝试使用VBA创建(和更新)状态窗口。显示状态窗口时,将“在后台”复制/编辑行。
状态窗口(带有动态元素的静态UserForm)由以下两个过程处理(我通过删除一些格式元素(如标题等)简化了它们)以及通过其调用的“主过程”:
'Create and initialize window
Sub ShowStatusWindow(strText As String)
'Userform
UserForm1.Height = 50
UserForm1.Width = 200
'Label
Dim messageLabel As MSForms.Label
Set messageLabel = UserForm1.Controls.Add("Forms.Label.1","messageLabel_1")
messageLabel.Top = 10
messageLabel.Left = 10
messageLabel.Width = 200
messageLabel.Caption = strText
'Show Status-Window
UserForm1.Show vbModeless
DoEvents
End Sub
'Changing text in status window
Sub ChangeStatusWindow(strText As String)
UserForm1.Controls("tmpMessageLabel_1").Caption = strText
'Repaint and DoEvents does not seem to help here
UserForm1.Repaint
DoEvents
End Sub
Sub main()
ShowStatusWindow("Start")
For index = 1 To indexMax
'Change text in Status window to e.g. "iteration:1/2")
ChangeStatusWindow("iteration:" & index "/" & indexMax)
'Repaint and DoEvents does not seem to help here either
UserForm1.Repaint
DoEvents
'Do Stuff
Next index
End Sub
我第一次使用ChangeStatusWindow()
可以正常工作(在逐步调试过程中),但是现在UserForm中的标签将不会更新。我不知道我在这里弄糟了什么...任何提示将不胜感激。
注意:作为一种(不受欢迎的)解决方法,我关闭,更新并打开Status-Window-UserForm可以进行的工作,除了闪烁效果要求循环“减速”外人为地。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)