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语言。请使用相应的标签。*