仅隐藏特定工作簿,而不会影响其他工作簿

时间:2018-11-21 05:58:52

标签: excel vba excel-vba

已经在互联网上转了一圈,得到的答案与我想的不一样。

问:如何隐藏工作簿并显示用户窗体而不隐藏其他工作簿?

这段代码很好,但是隐藏了其他工作簿。

Application.Visible = False

此代码很糟糕,因为它仍然显示excel应用程序。

Workbooks("Workbook Name.xlsm").Window(1).Visible = False

也不要工作。

ActiveWorkbook.Visible = False

最后,工具方法进入工具>选项>常规选项卡>忽略其他应用程序。我的VBA上没有此选项

这是我使用的代码。

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

以及在ThisWorkbook模块中

Private Sub Workbook_Open()
UserForm1.Show
End Sub

1 个答案:

答案 0 :(得分:0)

隐藏一本特定工作簿的正确方法是

Application.Windows(ThisWorkbook.Name).Visible = False

其中ThisWorkbook.Name可以用所需的工作簿名称替换,例如"MyWb.xlsm"

  • 如果同时打开多个工作簿,这将隐藏指定的工作簿(及其应用程序窗口)。
  • 如果这是唯一打开的工作簿,它将隐藏指定的工作簿(没有其应用程序窗口)。

如果要隐藏应用程序窗口,则必须使用

Application.Visible = False

现在的诀窍是将它们结合起来

If Application.Windows.Count > 1 Then 'more than one workbook open: Hide workbook only
    Application.Windows(ThisWorkbook.Name).Visible = False
Else 'only one workbook open: Hide application
    Application.Visible = False
End If