3

我正在开发一个 Access 应用程序,在该应用程序中运行一个将一堆文本文件导入 Access 的进程,并且我想为此进程显示一个进度表。

我已经构建了一个简单的进度条:我有一个包含五个矩形和一个文本框的表单。当五分之一的文本文件完成导入时,文本框会显示“导入的文件的百分之二十”,并且其中一个矩形变得可见。当第二个五分之一完成时,它会再次更新,依此类推。

我遇到的问题是表单仅在 60% 和 100% 时更新。其他增量的代码有效,但表单未更新。我怀疑当我运行 VBA 语句时

Forms("ImportingData")!Box1.Visible = True

该脚本实际上不会暂停,直到该框在屏幕上可见,然后继续运行。它只是在内部更改属性或其他内容。我试图通过让它暂停 1 秒来解决这个问题

Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)


Sub UpdateStatusForm(fifth As Integer)

    If fifth = 1 Then
        Forms("ImportingData")!PctComp.Caption = "20 percent of txt files imported"
        Forms("ImportingData")!Box1.Visible = True
    ElseIf fifth = 2 Then ...
    Sleep(1000)
End Sub

但它没有奏效。还有其他建议吗?

谢谢!

4

1 回答 1

2

看看 DoEvents。如果您想在进程运行时更新 GUI,这是一个不错的选择

于 2012-12-11T18:45:38.823 回答