Application.OnTime不适用于userform

时间:2015-08-24 00:19:55

标签: excel vba intervals userform 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使用Userform时,它不会以4秒的间隔周期性地发生,但只做一个循环。如果我想用我的数字填充更多单元格,我必须单击单击并单击该死的按钮。我希望它更自动。

这是我用来调用循环函数的Userform按钮的一段代码。应该重复,但事实并非如此。

Private Sub cbCyclic_Click()
cyclic
End Sub

我做错了什么?

1 个答案:

答案 0 :(得分:0)

Application.OnTime引用的过程必须位于标准代码模块中。它不能位于类模块中,而userforms是专门的类。

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

您最好的办法是将cyclic()重定位到标准代码模块并将其设置为Public。然后,用户窗体中的命令按钮单击事件过程应该可以不进行任何更改。