根据特定单元格的值隐藏行

根据特定单元格的值隐藏行
Private Sub Worksheet_Change(ByVal Target As Range)
    If Range("A1").Value = "Passed" Then
        Rows("2:5").EntireRow.Hidden = True
    ElseIf Range("A1").Value = "Failed" Then
        Rows("2:5").EntireRow.Hidden = False

    End If
End Sub

我正在将其添加到常规 VBA 模块中。当我尝试运行它时,系统会打开一个宏屏幕。我希望它在后台运行,这样我在 A1 行 2 - 5 上输入的所有内容都会自动隐藏。

我正在使用 Excel 2012。请帮忙。谢谢 :-)

答案1

不要将其添加到常规 VBA 模块;将其放在您希望发生这种情况的工作表模块中。

在此处输入图片描述

Worksheet_Change 事件仅当存储在工作表的代码中时才会触发。我将此代码添加到我的对象中,并且它工作正常,因此只需将其放入工作表中即可。

如果您希望它在多张工作表上运行,您有几个选择。您可以将代码原封不动地放在每个工作表对象中,也可以将代码放在模块中并向每个工作表添加一个调用。每张工作表都会有这样的内容:

Private Sub Worksheet_Change(ByVal Target As Range)
    Call PassFailCheck(Target)
End Sub

然后,您可以将大部分代码放入这样的模块中:

Sub PassFailCheck()
    If Range("A1").Value = "Passed" Then
        Rows("2:5").EntireRow.Hidden = True
    ElseIf Range("A1").Value = "Failed" Then
        Rows("2:5").EntireRow.Hidden = False
    End If
End Sub

第二种选择稍微复杂一些,但如果您需要定期更改代码,则它更容易维护。

相关内容