0

我有 vba,我正在从一个启动宏以执行它们的批处理中运行它,我试图在所有功能完成后关闭访问但是创建一个新功能并放置“Application.Quit”正在关闭应用程序之前功能已经完成。

有人有想法么?

谢谢,西蒙

编辑:

Public Function finish()

    Application.Quit

End Function
4

2 回答 2

1

在您的代码中放置一个计时器循环以使数据库进入睡眠状态并给它时间让函数运行。

首先,将其放在任何 MODULE 中的 Option Compare 或 Option Explicit 行下方(注意:它必须位于适当的模块中,而不是表单的模块中):

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

那么你的函数应该是这样的:

Public Function finish()

    Dim X as Integer

    For X = 1 To 10
        Sleep 1000
        DoEvents
    Next X

Application.Quit
End Function
于 2013-07-17T14:12:30.527 回答
0

老实说,我不明白您到底在做什么,以便您的应用程序在所有功能完成之前关闭。

如果你想执行一些功能然后关闭应用程序,有两种方法可以做到:

  1. 在宏中放置几个RunCode​​动作,每个动作执行一个函数,最后一个执行Application.Quit.

  2. 编写一个执行所有其他函数然后退出的“runner”函数:

    Public Function F1()
        'do stuff
    End Function
    
    Public Function F2()
        'do stuff
    End Function
    
    Public Function Finish()
        Application.Quit
    End Function
    
    'execute this function from the macro:
    Public Function Runner()
        F1
        F2
        Finish 'or directly call "Application.Quit" here instead
    End Function
    

无论您选择哪种方式,Access 都会按照指定的顺序执行功能,一个接一个......并且在一切完成之前它不应该关闭!

如果是这样,我想你正在做一些不同的事情。
正如 shahkalpesh 在他的评论中已经建议的那样 - 那么向我们展示更多代码。

于 2013-07-18T21:16:56.617 回答