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
第二种选择稍微复杂一些,但如果您需要定期更改代码,则它更容易维护。