【问题标题】:VBA macro hiding sheetsVBA 宏隐藏表
【发布时间】:2018-02-16 04:18:04
【问题描述】:

我知道我的问题到处都有答案,但我都试过了,我不确定我错过了什么,或者你有什么。基本上我在一个 Excel 电子表格中有大约 20 个选项卡。在工作簿打开时,我试图将它们全部隐藏,但这不起作用。当我的工作簿打开时,我看到工作表闪烁一秒钟,然后一切都像往常一样。我基本上是在遍历所有工作表并像这样隐藏它们......

Private Sub Workbook_Open()
Dim ws As Worksheet

For Each ws In ActiveWorkbook.Worksheets
    ws.Visible = xlSheethidden
Next ws

LogForm.Show

End Sub

我做错了什么?如果我只是这样做,我可以隐藏它们......

sheets("Project").visible=false

但由于用户可能会添加更多工作表,因此我试图确保我的代码是动态的。

【问题讨论】:

  • 应该是ws.visible = xlSheetHidden
  • IIRC,您无法隐藏 每个 工作表。至少一个必须保持可见。顺便说一句,那应该是 ThisWorkbook 而不是 ActiveWorkbook。
  • 如果你显示一个表单,而不是隐藏工作表,你能不能只使用Application.Visible = False?

标签: vba excel


【解决方案1】:

有几种不同的方法可以让用户窗体可见而工作簿不可见。

在打开时最小化您的工作簿。

Private Sub Workbook_Open() 'This is in the Workbook Code
    Application.WindowState = xlMinimized
    UserForm1.Show xlModeless
End Sub

隐藏单个工作表。

Sub mySub()
    Dim ws as Worksheet: Set ws = ThisWorkbook.Sheets(1)

    ws.Visible = xlSheetHidden
End Sub

完全隐藏 Excel 窗口(仅显示用户窗体)

Sub mySub()
    UserForm1.Show xlModeless
    Application.Visible = False 'Can also be placed in Workbook_Open() to hide on open
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    Application.Visible = True
End Sub

隐藏单个工作簿

Sub MySub()
    Windows("MyWorkbook").Visible = False
End Sub

【讨论】:

  • 谢谢,太好了!我遇到的唯一问题是启用内容提示。在用户单击按钮之前似乎没有执行任何代码,但这是我绝对可以使用的。
猜你喜欢
  • 2013-09-01
  • 1970-01-01
  • 2019-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多