2015-08-24 61 views
0

工作,我已經有了一個一段代碼的一個問題:Application.OnTime不與用戶窗體

Private Sub cyclic() 

Static i As Integer 
i = i + 1 

Cells(i, 11) = i 
Open source For Append As #1 
Write #1, Cells(i, 11) 
Close #1 

Application.Wait (Now + TimeValue("0:00:01")) 

Open source For Input As #1 
Do While Not EOF(1) 
Input #1, x1 
Loop 
Cells(i, 1) = x1 
Close #1 

Application.OnTime Now + TimeValue("00:00:03"), "cyclic" 

End Sub 

這幾乎是這樣的。 它可以從工作表alt + f8宏的級別完美工作,但是當我想通過單擊CommandButton來使用它時,它不會以4秒的間隔發生,但只執行一個循環。如果我想用我的號碼填充更多單元格,我必須單擊單擊單擊並單擊該死的按鈕。我希望它更自動。

這是我用來調用循環函數的Userform按鈕中的一段代碼。它應該重複,但事實並非如此。

Private Sub cbCyclic_Click() 
cyclic 
End Sub 

我在做什麼錯?

回答

0

Application.OnTime引用的過程必須駐留在標準的代碼模塊中。它不能位於類模塊中,而且用戶表單是專用類。

在標準代碼模塊中調用的過程必須是Public。

最好的辦法是將cyclic()重定位到標準的代碼模塊並使其成爲Public。然後,用戶窗體中的命令按鈕單擊事件過程應該不做任何更改。

+0

謝謝,你救了我的命。有效 :) – Pawel