VBA中的暂停和恢复按钮

时间:2013-05-20 07:07:38

标签: forms excel vba resume onpause

我有一个VBA子程序,可以在电子表格中绘制一些形状并移动它们。这就是我的子程序所说的

Sub Assignment(amplitude As Double, deltaphase As Double)

我从表格中获取振幅和deltaphase值。我的表单中有三个按钮“开始,暂停,恢复”。

我知道如何编码“开始”按钮。

Private Sub start_Click()

Dim formAmplitude As Double
Dim formPhase As Double

formAmplitude = assignmentform.ampbox.value
formPhase = assignmentform.phsbox.value

Call Assignment(formAmplitude, formPhase)

End Sub

但我不知道该怎么做“暂停”和“恢复”按钮...

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

我通常做的是告诉相应的Assignment例程用户可以看到哪些用户表单,因此例程定期(如在循环/更新结束时)执行一个DoEvents,它允许按钮单击事件进程表格。在分配中调用DoEvents后,您将检查表单上的布尔标志,如“正在运行”,如果是,则不进行。当然,“暂停”按钮单击事件必须将此运行标志设置为false。

你真的应该让代码的初始化部分在一个单独的函数中运行,而不是执行部分,这样你就可以初始化你的动画,打开表单,然后调用执行代码,这将恢复用户的任何动画点击“播放”。

我希望这是有道理的,因为否则你必须有这样的循环:

Do While Frm.Running = False
    DoEvents
    Sleep 100
Loop

您必须在任何想要检查暂停/恢复点击的地方执行此操作。 DoEvents调用允许Excel不会在将要运行的循环中冻结,直到您单击Resume,并且睡眠是为了防止CPU利用率增加。您必须使用适当的Sleep Windows API调用。