userform中的事件顺序

时间:2014-02-19 16:13:47

标签: events excel-vba userform vba excel

所以, 如果我在userform中有这个功能:

function myFunc() as String
    Me.Show vbModal
    stringVar = "Second"
end function

我在所述用户表单上有单独命令按钮的click事件:

Private Sub cmdbutton_Click()
    Unload Me
    stringVar = "First"                                                  
End Sub

我的问题是,当我从某处调用该函数(“MyFunc”)时,按钮的单击事件(“cmdButton”)会在允许函数继续之前继续处理,还是基本上是抛硬币?此stringVar变量是userform的私有变量。它在该按钮的单击事件中设置,但我想在单击发生后在函数中使用它。 (表格上还有其他组件,计算等......)

那么在点击事件结束之前该功能是否有继续处理的风险?如果函数在click事件之前继续,那么变量将无法正确设置

1 个答案:

答案 0 :(得分:1)

  

我的问题是,当我从某处调用该函数(“MyFunc”)时,按钮的单击事件(“cmdButton”)会在允许函数继续之前继续处理,还是基本上是抛硬币?

让我用图片后面的描述来解释

enter image description here

  1. 运行该功能时,将执行第一行。现在,由于表单显示为模态,下一行stringVar = "Second"将不会运行,直到卸载用户表单为止。
  2. 将在上述方案中执行的下一行是Unload Me。但是,这并不意味着之后的任何代码都不会运行。 Unload MeExit DoExit For不同。它只是卸载对象,决不会停止进一步执行脚本/代码。
  3. 很明显,执行的下一行是stringVar = "First",它到达End Sub
  4. 这是控件返回函数的时间,它继续执行下一行stringVar = "Second"
  5. 希望这是有道理的。如果没有,那么请随时问你有什么疑问。

    您还可以使用 F8 单步执行代码来执行代码。

    进一步阅读: Debugging VBA Code