Vba 当窗体关闭并设置为vbModeless时,如何等待特定代码运行?

Vba 当窗体关闭并设置为vbModeless时,如何等待特定代码运行?,vba,excel,macros,Vba,Excel,Macros,我有一个宏,它生成一个报告,显示我们的银行和会计记录在当天是一致的。在宏的末尾,仅当检测到差异时才会显示UserForm,并允许用户在处理完差异后将其从列表框中删除 为了让用户在保持UserForm打开(跟踪差异)的同时分析输入数据(在单独的工作表上导入工作簿),我只需设置UserForm.Show vbModeless。我现在的问题是,我试图实现一个新函数,在UserForm关闭后运行,但是当它处于无模式状态时,它只是检查是否满足条件并继续运行 我试图在ok按钮事件侦听器中实现一个GoTo X

我有一个宏,它生成一个报告,显示我们的银行和会计记录在当天是一致的。在宏的末尾,仅当检测到差异时才会显示
UserForm
,并允许用户在处理完差异后将其从
列表框中删除

为了让用户在保持
UserForm
打开(跟踪差异)的同时分析输入数据(在单独的工作表上导入工作簿),我只需设置
UserForm.Show vbModeless
。我现在的问题是,我试图实现一个新函数,在
UserForm
关闭后运行,但是当它处于
无模式状态时,它只是检查是否满足条件并继续运行

我试图在
ok按钮
事件侦听器中实现一个
GoTo X
,但我不确定当从
UserForm
中引用时,如何使代码
GoTo
在主
模块
中有一行

我的问题:如何将此
UserForm
设置为
Modeless
,并允许用户在数据中导航并打开它,但不允许继续编码,除非它关闭/卸载/ok按钮按下

下面是按钮侦听器:

Private Sub OKButton_Click()
    '.... Code here
    Me.Hide
    LeftoverValues.Closed = true '(other UserForm if discrepancies not taken care of)
    Closed = true 'boolean to flag this as closed
    GoTo UnmatchedSummaryClosed: '(name of form, GoTo Line in module)
End Sub
下面是宏结尾的代码-从调用
UserForm
到结束:

    '... Approx 2000 lines worth of code leading to this

    Application.ScreenUpdating = True

    Beep 'To alert users that it's 'finished'

    If WireValues.Count > 0 Or BWGPValues.Count > 0 Then
        Call DifferenceForm    'Discrepancy UserForm - Named UnmatchedSummary
    End If

    Beep   'alert to show discrepancy check is done - shows if needed

    Call warnForm

UnmatchedClosed:   'INTENDED GoTo LINE FROM USERFORM
    If UnmatchedSummary.Closed And LeftoverValues.Closed And WarningForm.Closed Then
        Call ARSummary
    End If

    Call StopTimer(time1, Started1)  'Timer to show how long macro took
    Debug.Print "Total Time: " & ShowTime(time1) & "ms"

    If UnmatchedSummary.Closed And WarningForm.Closed And ARSummaryDone Then
        End             'Also want this to happen only if everything's done
    End If              ' Don't want data to hang if user doesn't close macro template
End Sub

您可以尝试在用户窗体关闭时触发的
UserForm\u Terminate()
中调用要运行的函数。

调用
Me.Hide
时是否触发
Terminate
事件?否,仅在关闭或卸载时请不要对Excel/VBA问题使用[macros]标记。它的标签信息显示,
*不适用于MS-OFFICE/VBA/macro语言。请使用相应的标签。*