VBA中UserForm上的实时更新动态标签

问题描述

我正在尝试使用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 (将#修改为@)