This is based on the OP, feel free to change it around.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

'create a named range in the rows you want to hide
'name it MyName1

If Range("B4").Value = 0 Then
    Range("MyName1").EntireRow.Hidden = True
Else
    Range("MyName1").EntireRow.Hidden = False
End If

End Sub