如何确保在关闭其他工作簿时不关闭宏工作簿

时间:2018-10-24 08:49:54

标签: excel vba userform

场景

我有一个用户表单,使用以下Application.Visible = False方法打开时,Excel工作簿将被隐藏。这些是代码

我的用户表单

enter image description here

show excel按钮是Commandbutton1
hide excel按钮为Commandbutton2

此工作簿

enter image description here

代码

Private Sub Workbook_Open()
  Call hideExcel
  UserForm1.Show
End Sub

Userform1

enter image description here

代码

Private Sub CommandButton1_Click()
    If Workbooks.Count > 1 Then
        Windows(ThisWorkbook.Name).Visible = True
    Else
        Application.Visible = True
    End If
End Sub
Private Sub CommandButton2_Click()
    Call hideExcel
End Sub
Sub UserForm_Initialize()
    Call hideExcel
End Sub
Private Sub UserForm_Terminate()
    If Workbooks.Count > 1 Then
        Windows(ThisWorkbook.Name).Visible = True
    Else
        Application.Visible = True
    End If
End Sub
Sub userform_click()
    Call hideExcel
End Sub

模块

enter image description here

代码

Sub hideExcel()
    If Workbooks.Count > 1 Then
        Windows(ThisWorkbook.Name).Visible = False
    Else
        Application.Visible = False
    End If
End Sub

问题

我面临的问题是

  1. 打开我的宏并激活用户窗体。让我们将此文件称为A
  2. 然后打开另一个工作簿。让我们将此文件称为B
  3. 试图隐藏工作簿B时关闭文件A。但是也会提示关闭文件A,最终所有excel都将关闭,包括我的宏文件A

有人知道这是什么问题吗?

1 个答案:

答案 0 :(得分:0)

我不明白问题出在哪里?如果要关闭最后一个可见(未隐藏)的工作簿,Excel也会尝试关闭所有其他打开的工作簿(即使它们已隐藏)。而且我认为这是正常的Excel行为。您只能避免看到提示,例如通过将Workbook.Saved属性设置为True或通过将Application.DisplayAlerts属性设置为False或仅在关闭之前保存工作簿即可。

如果您不想关闭隐藏的工作簿,只需在关闭第二个工作簿之前使其可见即可。