有一个macros来隐藏工作簿中的所有工作簿,当一个特定的单元格等于100%?
我理解这背后的逻辑,但我不确定如何正确macros观。 我将多达63张数据导入到excel中。
所有的工作表在B列第9行中都有一个状态。当B9 = 100%时,我想要创build一个macros来隐藏工作簿中的所有工作表。
If Worksheet.Column.B, Row.9= 100% Worksheet.hide
打开VB编辑器ALT + F11 。 在Microsoft Excel Objects
右键单击插入 – >模块。 粘贴下面的代码。
Option Explicit Public Sub HideSheets() Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets If ws.Range("B9").Value = 1 Then ws.Visible = xlSheetHidden End If Next ws End Sub
Option Explicit
设置强制您声明variables。 我包括这一点,因为在良好的编码实践之上,它节省了我几个小时的debugging时间,只是发现我拼写了一个错误的variables(在添加这行之前,这些错误在代码开始之前被捕获)。
基本原理是代码使用For..Each
循环遍历工作簿中的每个工作表。 如果单元格B9
为1(对应于100%),则将工作表的Visible
属性设置为隐藏表单的xlSheetHidden
。 如果用户右键单击工作表选项卡并select“ Unhide...
,则可以Unhide...
具有此可见属性的表格。 如果您不希望用户能够取消隐藏表单,则可以将其设置为隐藏表单并禁用从UI中隐藏表单的xlSheetVeryHidden
。
要运行这个macros,你可以点击代码中的任何地方,然后点击看起来像是玩的button(这是Run Sub / Userformbutton),或者你可以按F5 。
我会build议将macros设置为键盘快捷方式,或者如果您喜欢位于工作表上的某个button。
为macros指定一个键盘快捷键:
- 在开发人员选项卡下selectmacros(或者简单地按ALT + F8 )显示macros窗口
- 在
Macro name:
select你的macros的名字(在这个例子中是HideSheets
) - 点击
Options...
- 把钥匙放在你要按的位置来运行macros(在这种情况下,我selectCTRL + h作为隐藏)
- select
OK
- 按下您指定的键盘组合进行testing
此外,您可以分配一个macros来单击工作表上的一个button时执行此操作:
- 在开发者下,进入插入下拉菜单
- 在ActiveX控件下,select命令button
- 在页面的任何位置绘制button
- 右键单击button – > CommandButton Object – > Edit
- 将button文本更改为任何你想要的(例如
Hide Sheets
) - 双击button打开代码,你会看到一个名为
CommandButton1_Click()
的Sub
-
像这样
HideSheets
到子程序(或者你的子程序的名字是什么)Private Sub CommandButton1_Click() HideSheets End Sub
-
通过单击Developer选项卡下的Design Mode退出devise模式
-
点击button确保macrosfunction
根据Soulfire的回答,您可以随时在单元格中的值更改值时自动运行。 只要将下面的代码放在工作表(而不是模块)下面,每当单元格C9中的值发生变化时,它将运行macros“HideSheets”。
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$C$9" Then Call HideSheets End If End Sub