Не добавляйте его в обычный модуль 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
Второй вариант немного сложнее, но его легче поддерживать, если вам нужно регулярно вносить изменения в код.