2013-07-17 28 views
0

我已經從一個啓動宏執行它們的批處理中運行了vba,我試圖在所有功能完成後關閉訪問,但是創建一個新功能並將「 Application.Quit「將在功能完成之前關閉應用程序。所有功能完成後VBA關閉訪問

任何人有任何想法?

感謝, 西蒙

編輯:

Public Function finish() 

    Application.Quit 

End Function 
+0

你可以顯示代碼嗎? 'Quit'是什麼意思是在功能完成之前關閉應用程序? – shahkalpesh

+0

已編輯代碼 –

回答

1

把一個計時器循環在你的代碼把DB睡覺,並給它時間函數運行。

首先,把這個剛下選項中的任何模塊比較或顯式的選項行(注:它必須是一個適當的模塊,而不是形式的模塊):

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 
+0

當上面提到它時,它說「找不到變量」並突出顯示「for x」行,有什麼想法? –

+0

您首先需要將Dim X作爲Integer。 –

+0

好的,似乎已經完成了這項工作 –

0

老實說,我不明白究竟你正在做的,使您的應用程序關閉之前所有的功能已經完成。

如果要執行一些函數,然後關閉應用程序,有兩種方式可以如何做到這一點:

  1. 把幾個RunCode動作宏,每一個執行你的功能之一,最後一個執行Application.Quit

  2. 寫「亞軍」函數執行所有的人,然後退出:

    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 
    

無論您選擇哪種這些方式,訪問指定的順序執行的功能,一個後另一個......在一切完成之前它不應該關閉!

如果是這樣,我想你正在做一些不同的事情。
正如shahkalpesh在他的評論中所暗示的那樣 - 那麼向我們展示更多的代碼。