Access TextBox 在 VBA 循环期间不更新,仅在

Access TextBox does not update during VBA loop, only after

正在使用 VBA 访问。

我的情况很简单,我在网上看到了一些不同的解决方案,但没有一个适合我。

我有一个带有文本框的表单需要在 for 循环中更新。 我已将脚本缩减为以下内容:

For counter = 1 To 100

Application.Echo False
DoCmd.OpenQuery "Query1"
DoCmd.Close
Application.Echo True

strStatus = "Loop is " & counter & " % done"
Call dsp_progress_AfterUpdate
Me.Refresh
DoEvents

Next

还有那个叫做:

Private Sub dsp_progress_AfterUpdate()
Me.Dirty = False
End Sub

文本框控件源是 strStatus(通过函数)。

每个循环大约需要 4 秒(查询),所以它不是因为它在 2 毫秒内结束。

它仅在 for 循环完成时更新。

奇怪的是,如果我在循环运行时使用光标并手动单击文本框,它确实有效......

所以问题是,如何让它更新 "live" 而不必单击带有 mouse/curser 的文本框?状态显示不方便

求助...:)

最好的问候,埃米尔。

我不确定无法更新文本框的根本原因是什么,但是添加一行就解决了这个问题。将焦点设置到您正在更新的文本框(这是您单击它时正在做的事情),导致它更新。

textBox.SetFocus

在开始循环之前将其添加到您的代码中。

将代码更改为以下内容应该可以消除闪烁和突出显示文本的事实。

For counter = 1 To 100
    Application.Echo False
    DoCmd.OpenQuery "Query1"
    DoCmd.Close
    strStatus = "Loop is " & counter & " % done"
    Call dsp_progress_AfterUpdate
    Me.Refresh
    TextBox.SetFocus
    TextBox.SelStart = 0
    TextBox.SelLength = 0
    DoEvents
    Application.Echo True
Next