Workbook_Deactivate事件中的UserForm.Hide错误

正如标题所说,我的用户表单遇到了一个特殊的问题。 当我closures它(使用命令button)时,Workform_Deactivate事件中的Userform.Hide上将popup一个错误消息。

这是Userform_initialize事件中的代码:

这里的所有variables都是全局的

VBA:

Private Sub Userform_Initialize() subRemoveCloseButton Me Set pagina = ThisWorkbook.Worksheets("Ruta") Set libro = Workbooks.Open(pagina.Range("B4").Value, False, True) Set pagina2 = libro.Worksheets("GLOBAL") pasadas = 0 If pagina2.AutoFilterMode Then If pagina2.FilterMode Then pagina2.ShowAllData End If ElseIf pagina2.FilterMode Then pagina2.ShowAllData End If pagina2.Columns("A:IV").EntireColumn.Hidden = False lastRow = pagina2.Cells(pagina2.Rows.Count, "B").End(xlUp).Row Call RemoveDuplicates With Me.ImagenDatos .ScrollBars = fmScrollBarsBoth 'Change 8.5 to suit your needs .ScrollHeight = .InsideHeight * 5 .ScrollWidth = .InsideWidth * 3 End With End Sub 

然后在CommandButton_Click事件中,我有这样的:

VBA:

 Private Sub BotonCerrar_Click() Unload Consultas libro.Saved = True libro.Close ThisWorkbook.Close End Sub 

正如已经评论的那样,这个错误来自于:

VBA:

 Private Sub Workbook_Deactivate() Consultas.Hide End Sub 

如果我注释单行Userformclosures没有问题,但我需要它,以便用户窗体(Consultas)隐藏时,用户切换工作簿。

错误消息说:对象variables或块variables未设置(错误91)

任何人都知道什么是错的线索? 这是我的第一篇文章,如果需要别的东西,请让我知道。

我将不胜感激任何帮助。

编辑:我有更多的代码,但我认为这是非常重要的,因为我所做的就是打开Excel工作簿,然后用户窗体显示,然后单击closures用户窗体的button

所以这就是我解决这个问题的方法:

在试图隐藏Workbook_Deactivate事件的用户表单Consultas之前,我首先检查了用户表单是否可以通过@Ralph提供的链接看到。

这解决了问题的一部分,但错误转移到了closureslibro的部分:

 Private Sub BotonCerrar_Click() Unload Consultas libro.Saved = True libro.Close ThisWorkbook.Close End Sub 

错误依然存在,甚至在卸载@SFbuild议的userform之前,但我解决了它调用Application.Workbooks(libro.Name).Close Falselibro.close False而不是libro.close False (如果有人可以解释这一点,我真的很感激它)

最终的代码如下:

 Private Sub BotonCerrar_Click() Dim wb As Workbook Dim otrolibro As Boolean otrolibro = False Application.Workbooks(libro.Name).Close False Unload Consultas For Each wb In Workbooks If wb.Name <> ThisWorkbook.Name Then otrolibro = True Exit For End If Next wb If otrolibro = True Then ThisWorkbook.Close False Else ThisWorkbook.Saved = True Application.Quit End If End Sub 

如果没有打开另一个工作簿,cicle将退出excel应用程序,因为如果我closures所有工作簿,Excel窗口将保持打开状态而不会显示任何内容。