gpt4 book ai didi

VBA隐藏工作簿中未使用的所有工作表

转载 作者:行者123 更新时间:2023-12-04 21:21:38 27 4
gpt4 key购买 nike

我的工作簿中有很多工作表。我有一个名为“JE”的主工作表/“表单”,在该工作表上有一些按钮和宏可以通向工作簿中的其他工作表。但是,目的是让其他用户,而不是我自己,来使用工作簿。所以,我只希望正在使用的工作表在任何给定时间都可见。在任何时候,我都不想让用户看到超过 1 张纸。用户可以主要通过单击按钮和选择工作表中的某些单元格来导航工作簿,这将允许他们在整个工作簿中导航。我已经通过将代码添加到“ThisWorkbook”模块中来尝试过这个,但它似乎并没有像我想要的那样工作。当我导航到一个工作表并返回另一个工作表时,一些工作表在我希望它们被隐藏时仍然可见,所以我不确定我可以对下面的代码进行哪些其他修改以获得我想要的结果。如果有人可以提供我可以为实现此目的而进行的任何修改或更改,我将不胜感激。

更新 :
我已将此代码添加到我的“ThisWorkbook”对象中:

 Option Explicit

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim MySh As Worksheet

For Each MySh In ThisWorkbook.Worksheets
If MySh.Name <> Sh.Name Then MySh.Visible = 0
Next MySh
End Sub

但是,当我双击通常在我的主工作表(“JE”)中填充单元格的值时,我得到一个运行时 1004 错误。这些值仍然填充主工作表,但它不再像我想要的那样导航回主工作表。

如果有人知道我可以制作的解决方案或模组,我将不胜感激。

最佳答案

代码很好。简单的把它放在 VBA 项目的 Workbook 部分:

Option Explicit

Private Sub Workbook_Open()

Dim MySh As Worksheet

For Each MySh In ThisWorkbook.Worksheets
If MySh.Name = ActiveSheet.Name Then MySh.Visible = xlSheetHidden
Next MySh

End Sub

ThisWorkbook 部分在这里:
enter image description here

一般来说,当我启动 Excel 应用程序时,我总是使用类似的东西。我定义了两个 ArraysVisibleInvisible工作表和我迭代它们,使它们可见或不可见。像这样:
Option Explicit

Public Sub HideNeeded()

Dim varSheet As Variant
Dim arrVisibleSheets As Variant
Dim arrHiddenSheets As Variant

arrVisibleSheets = Array(Sheet1)
arrHiddenSheets = Array(Sheet2, Sheet3)

For Each varSheet In arrVisibleSheets
varSheet.Visible = xlSheetVisible
Next varSheet

For Each varSheet In arrHiddenSheets
varSheet.Visible = xlSheetVeryHidden
Next varSheet

End Sub
xlSheetVeryHidden可以仅从 VB 编辑器中取消隐藏它。否则你需要 xlSheetHidden .

关于VBA隐藏工作簿中未使用的所有工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45306186/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com