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 False
。 libro.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窗口将保持打开状态而不会显示任何内容。