【问题标题】:How to make sure Macro workbook don't close while closing other workbooks如何确保宏工作簿在关闭其他工作簿时不会关闭
【发布时间】:2018-10-24 20:43:52
【问题描述】:

场景

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

我的用户表单

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

本工作簿

代码

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

用户表单1

代码

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

模块

代码

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. 试图在工作簿A 隐藏时关闭文件B。但是也会提示关闭文件A,最终所有的excel都将关闭,包括我的宏文件A

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

【问题讨论】:

    标签: excel vba userform


    【解决方案1】:

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

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

    【讨论】:

    • 我的问题不是关于应用程序显示警报。就像我在问题中提到的那样,场景是; userform 处于活动状态,ThisWorkbook 处于隐藏状态。但与此同时,当尝试关闭另一个未隐藏的工作簿时,整个 excel 将关闭,包括该用户窗体的 userformThisWorkbook
    猜你喜欢
    • 1970-01-01
    • 2014-08-01
    • 1970-01-01
    • 2015-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-27
    • 1970-01-01
    相关资源
    最近更新 更多