我有一个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
但我不知道该怎么做“暂停”和“恢复”按钮...
任何帮助将不胜感激
答案 0 :(得分:0)
我通常做的是告诉相应的Assignment例程用户可以看到哪些用户表单,因此例程定期(如在循环/更新结束时)执行一个DoEvents,它允许按钮单击事件进程表格。在分配中调用DoEvents后,您将检查表单上的布尔标志,如“正在运行”,如果是,则不进行。当然,“暂停”按钮单击事件必须将此运行标志设置为false。
你真的应该让代码的初始化部分在一个单独的函数中运行,而不是执行部分,这样你就可以初始化你的动画,打开表单,然后调用执行代码,这将恢复用户的任何动画点击“播放”。
我希望这是有道理的,因为否则你必须有这样的循环:
Do While Frm.Running = False
DoEvents
Sleep 100
Loop
您必须在任何想要检查暂停/恢复点击的地方执行此操作。 DoEvents调用允许Excel不会在将要运行的循环中冻结,直到您单击Resume,并且睡眠是为了防止CPU利用率增加。您必须使用适当的Sleep Windows API调用。