【发布时间】:2014-03-11 14:30:46
【问题描述】:
我在 Access 2010 中创建了一个 VBA 函数,它在“表单!”中打开一个进度条!并逐渐增加“frame1”的大小并更新标题框。在“Step Into”调试模式下运行此函数会产生预期的结果(所有宏运行正常、对话框打开和更新等。
但是,当我通过向导中内置的“传统”宏(抱歉不确定术语)调用此 VBA 时...即带有 Function =Import_Function() 的 RunCode,而所有查询都运行 find 和成功消息框出现在最后,表格或其任何更新不显示。我可能在这里遗漏了一些完全明显的东西,但如果有人能指出我正确的方向,我将不胜感激。
我的功能代码如下...
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Function Import_Function()
DoCmd.SetWarnings False
DoCmd.Hourglass True
DoCmd.OpenForm "Form1", acNormal, "", "", acReadOnly, acWindowNormal
Forms!Form1!Frame1.Visible = True
Forms!Form1!Prog_Description.Caption = "Caption1..."
Forms!Form1!Frame1.Width = 2000
Sleep (2000)
DoCmd.OpenQuery "Q002a", acViewNormal, acEdit
Forms!Form1!Prog_Description.Caption = "Caption2..."
DoCmd.TransferSpreadsheet acImport, 10, "Import Sheet", "File Location\File Name.xls", True, "A4:AA50"
Forms!Form1!Frame1.Width = 4000
Sleep (2000)
Forms!Form1!Prog_Description.Caption = "Caption3..."
DoCmd.OpenQuery "Q002b", acViewNormal, acEdit
Forms!Form1!Frame1.Width = 5000
Sleep (2000)
Forms!Form1!Prog_Description.Caption = "Caption4..."
DoCmd.OpenQuery "Q002c", acViewNormal, acEdit
Forms!Form1!Frame1.Width = 6000
Sleep (2000)
Forms!Form1!Prog_Description.Caption = "Caption5..."
DoCmd.OpenQuery "Q002c", acViewNormal, acEdit
Forms!Form1!Frame1.Width = 7000
Sleep (2000)
Forms!Form1!Prog_Description.Caption = "Caption6..."
DoCmd.OpenQuery "Q002a", acViewNormal, acEdit
Forms!Form1!Frame1.Width = 8000
Sleep (2000)
Forms!Form1!Prog_Description.Caption = "Caption7..."
DoCmd.OpenQuery "Q002e", acViewNormal, acEdit
Forms!Form1!Frame1.Width = 9000
Sleep (2000)
Forms!Form1!Prog_Description.Caption = "Caption8..."
DoCmd.DeleteObject acTable, "Temp_T"
Forms!Form1!Frame1.Width = 10000
Sleep (1000)
Forms!Form1!Prog_Description.Caption = "Update Complete!"
DoCmd.Hourglass False
DoCmd.Close acForm, "Form1"
Beep
MsgBox "Process Successfully Updated", vbInformation, "Process Update"
End Function
然后从那里,如前所述,我使用“RunCode”命令从宏运行它。
【问题讨论】:
-
我认为你最好使用状态栏。
-
更改
.Width属性后调用DoEvents()。 -
@Remou 感谢您的回复。这种方法的需要实际上是审美的。我使用这个特定的代码作为学习示例,以便在我的应用程序的未来启动屏幕中使用睡眠 API 和手动进度条等功能。不知道我的动机现在是否更有意义。我可以理解您的建议条款,非常感谢。
-
@HansUp 搞定了。非常感谢。我知道这是一种冗长的方法,但我喜欢这种视觉上的方式,这将对我未来的计划有很大帮助。干杯。
-
你可能想看看这个。这是我为进度条创建的通用可重用表单。 christopherjmcclellan.wordpress.com/2014/03/08/…
标签: ms-access vba ms-access-2010