使用命令按钮停止do循环

时间:2018-01-12 21:54:37

标签: excel vba excel-vba

我有一个行为不端的VBA excel用户表单。基本上我希望我的代码暂停,直到按下用户窗体上的命令按钮。有什么想法吗?

在一个模块中:

Public okayclicked as boolean

Sub MyThing
  UserForm1.Show
  Do Until okayclicked
     DoEvents
  Loop
 UserForm1.Hide
End Sub

在我的用户表单中:

Sub CommandButton1_Click()
   okayclicked = True
End Sub

不确定还有什么可以尝试使这项工作。任何帮助表示赞赏!谢谢!

2 个答案:

答案 0 :(得分:0)

使用MsgBox询问用户输入,或将表单设置为ModalMSDN link)。

Modal表单允许您继续在表单中工作,表单底层的任何代码都将继续运行,但调用表单的主代码将被“阻止”。

如果在暂停期间修改了基础Excel工作表,您可以在检测到按钮按下时(即当窗体关闭或按下MsgBox OK按钮时)添加代码以更新相关表格的一部分。

但我们已经从最初的简单问题和许多其他因素(例如在表格打开时如何修改基础表格)中发挥作用。

  • 考虑基础工作表的更改是否必须立即更改表单,或者当用户恢复表单/代码时是否可以发生。
  • 考虑您想要的功能是否可以在电子表格中本地完成,并最大限度地减少表单的使用/功能。
  • 考虑其他事件驱动的选项,其中代码被分解为自然部分,函数,子例程或模块,并且每个部分仅在由正确事件(工作表更改,用户输入,子例程完成,表单退出等)触发时运行。 LI>

答案 1 :(得分:0)

{{1}}