如何检测丢失的用户窗体

How to detect a missing UserForm

有没有像 Application.IsError(MissingObject) 这样的东西可以 return false 来表示错误的引用?

我有一个使用用户窗体的宏。它只是用两个按钮弹出,用户单击一个按钮,宏就会恢复。这个宏 运行 几十次,文件打开了几个小时。由于某种原因,用户窗体有时会停止存在,并且宏会在打开用户窗体的行上给出错误。我知道用户窗体是问题所在,因为如果我在收到此错误后在编辑器中单击它,应用程序会崩溃。

我使用的是 Excel 2007,所以真正的解决办法可能是升级到这十年制造的东西,但我的解决方法是退出宏并重新打开文件。是否有任何方法允许 Excel 识别用户窗体何时停止存在?

您可以浏览工作簿中的 VBComponents 并查看用户窗体是否存在。

这是一个按名称搜索的函数。

Function IsUserFormThere(strFormName As String) As Boolean
Dim comp As Variant

    For Each comp In ThisWorkbook.VBProject.VBComponents
        If comp.Name = strFormName Then
            IsUserFormThere = True
            Exit Sub
        End If
    Next comp

End Function

可以在按下按钮时调用此函数,如果未找到用户窗体,则可以停止代码执行并通知用户下一步要做什么。