【问题标题】:Hide only specific workbook without affecting other workbook仅隐藏特定工作簿而不影响其他工作簿
【发布时间】:2018-11-21 05:58:52
【问题描述】:

已经在网上转了一圈,得到的答案和我想的一样。

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

这段代码不错,但隐藏了其他工作簿。

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

【问题讨论】:

  • 你要求隐藏一个特定的工作簿,但抱怨它没有隐藏应用程序,还说隐藏应用程序不好,因为它隐藏了其他工作簿......你真正想要什么?你需要清楚。
  • 正如标题所说,隐藏唯一特定的工作簿。第一个代码隐藏所有工作簿,然后第二个代码没有隐藏 excel 应用程序。
  • 您说“此代码很糟糕,因为它仍然显示应用程序”,因此这与您的标题问题不匹配...

标签: excel vba


【解决方案1】:

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

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

【讨论】:

  • 您好,感谢您的友好回答。我尝试了代码,将其放入 Initialize 事件中并在 workbook_open 中添加 userform1.show。我打开额外的工作簿,然后打开我的工作文件并且没有隐藏任何工作簿另一方面我尝试在其他工作簿之前先打开我的工作文件,其他工作簿没有显示。
  • 代码应该可以工作(我不确定你做错了什么)。特别是如果我们看不到您的实际代码的样子。编辑您的原始问题,添加您使用的代码并准确描述您所做的事情。评论太短,无法澄清这个问题。
  • 嗨,我编辑问题并显示我使用的代码。还是我应该将您提供的代码放入 ThisWorkbook 模块?
  • 问题可能是代码试图在工作簿显示之前隐藏它。这可能是一个时间问题。也许尝试将其放入UserForm_Activate
  • 我将如何使用 UserForm_Activate?
猜你喜欢
  • 1970-01-01
  • 2022-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多