我理解这背后的逻辑,但我不确定如何改正宏。我将最多63张数据导入excel。
所有工作表在B列第9行中都有状态。我想制作一个宏来隐藏工作簿中的所有工作表,当B9 = 100%时
If Worksheet.Column.B, Row.9= 100%
Worksheet.hide
答案 0 :(得分:2)
打开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
设置会强制您声明变量。我把它包括在内,因为除了良好的编码实践之外,它还节省了我几个小时的调试时间,发现我拼错了一个变量名称(在添加这行代码开始之前会捕获这些错误)。
基本原则是代码使用For..Each
循环来遍历工作簿中的每个工作表。如果单元格B9
为1(对应于100%),则工作表的Visible
属性设置为xlSheetHidden
,这会隐藏工作表。如果用户在工作表选项卡上单击鼠标右键并选择Unhide...
,则可以取消隐藏具有此可见属性的表单。如果您不希望用户取消隐藏工作表,您可以将其设置为xlSheetVeryHidden
,这会隐藏工作表并禁用从工作表中取消隐藏工作表。
要运行此宏,您可以单击代码内的任何位置,然后单击看起来像播放的按钮(这是Run Sub / Userform按钮),或者您可以按 F5 。
我建议将宏设置为键盘快捷键,或者如果您喜欢位于工作表某处的按钮。
为宏指定键盘快捷键:
Macro name:
下选择您的宏名称(本例中为HideSheets
)Options...
OK
此外,您可以指定在单击工作表上的按钮时运行的宏,以执行此操作:
Hide Sheets
)Sub
标题为CommandButton1_Click()
将HideSheets
输入到子程序中(或者子程序的名称)
Private Sub CommandButton1_Click()
HideSheets
End Sub
单击“开发人员”选项卡下的“设计模式”
单击按钮以确保宏功能
答案 1 :(得分:0)
根据Soulfire的回答,您可以在单元格中的值更改值的任何时候自动运行 。只需将以下代码放在工作表(而不是模块)下,只要单元格C9中的值发生变化,就会运行宏“HideSheets”。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$9" Then
Call HideSheets
End If
End Sub