有一个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作为隐藏)
  • selectOK
  • 按下您指定的键盘组合进行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