Events userform中事件的顺序

Events userform中事件的顺序,events,excel,userform,vba,Events,Excel,Userform,Vba,所以, 如果我在userform中有此函数: function myFunc() as String Me.Show vbModal stringVar = "Second" end function Private Sub cmdbutton_Click() Unload Me stringVar = "First" End Sub 我在所说的用户表单上有一个

所以, 如果我在userform中有此函数:

function myFunc() as String
    Me.Show vbModal
    stringVar = "Second"
end function
Private Sub cmdbutton_Click()
    Unload Me
    stringVar = "First"                                                  
End Sub
我在所说的用户表单上有一个lone命令按钮的点击事件:

function myFunc() as String
    Me.Show vbModal
    stringVar = "Second"
end function
Private Sub cmdbutton_Click()
    Unload Me
    stringVar = "First"                                                  
End Sub
我的问题是,当我从某处调用该函数(“MyFunc”)时,按钮的单击事件(“cmdButton”)会在允许该函数继续之前继续处理,还是基本上是掷硬币?此
stringVar
变量是userform的私有变量。它是在该按钮的单击事件中设置的,但我想在单击发生后在函数中使用它。(表格、计算书等中将有其他组成部分)

那么,在单击事件完成之前,函数是否有继续处理的风险?如果函数在单击事件之前继续,那么变量将无法正确设置

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

让我先用一幅图来解释一下,然后是一个描述

  • 运行函数时,将执行第一行。现在,由于表单显示为模态,因此下一行
    stringVar=“Second”
    将在卸载用户表单之前不会运行
  • 在上述场景中执行的下一行是
    Unload Me
    。然而,这并不意味着之后的任何代码都不会运行<代码>卸载Me与退出Do或退出For不同。它只是卸载对象,而不会停止脚本/代码的进一步执行
  • 显然,执行的下一行是
    stringVar=“First”
    ,它到达
    End Sub
  • 这是控件返回函数并继续执行下一行的时间,即
    stringVar=“Second”
  • 希望这是有意义的。如果没有,请随便问你有什么疑问

    您还可以通过使用F8单步执行代码来查看代码的执行情况


    进一步阅读:

    如果事件没有被触发,即如果按钮没有被点击,为什么点击事件会处理任何事情?显然它不会。。。但是如果按下按钮。。然后,单击事件是否会在处理返回到
    myFunc
    之前完成?调用myFunc时,表单会以模式打开,因此
    myFunc
    中的处理将停止,直到表单关闭。我只需要知道当表单在click事件中关闭时,在返回到
    myfunc
    之前,是否会在click中继续处理,这是因为您的userform是模态表单。让它变成非模态。你没有读我说的
    我只需要知道当表单在click事件中关闭时,在返回myfunc之前,是否会在click中继续处理它
    ?我想要我拥有的方式,我只想知道它是否会一直有效。。或者,在单击完成之前,可能会有一次处理返回到
    myfunc
    ,在这种情况下,它会中断。我确实在调试器中看到了这一点,我只是想确认它将始终以这种方式进行,而不是通常以这种方式进行投币。西德哈特:一如既往地乐于助人