Application.OnTime 不适用于用户表单

Application.OnTime doesn't work with userform

我有一段代码有问题:

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 宏级别完美运行,但是当我想通过单击命令按钮将它与用户窗体一起使用时,它不会以 4 秒的间隔定期发生,而是只执行一个循环。如果我想用我的数字填充更多单元格,我必须单击单击单击并单击该死的按钮。我希望它更自动化。

这是我用来调用循环函数的用户窗体按钮的一段代码。它应该是重复的,但它不是。

Private Sub cbCyclic_Click()
cyclic
End Sub

我做错了什么?

Application.OnTime 引用的过程必须驻留在标准代码模块中。它不能位于 class 模块中,并且用户表单是专门的 classes.

标准代码模块中调用的过程必须是Public。

最好的办法是将 cyclic() 重新定位到标准代码模块并使其成为 Public。您在用户窗体中的命令按钮单击事件过程应该可以正常工作。