Hello arundh,

This should fix the problem.
Private Sub Worksheet_Change(ByVal Target As Range)

    Dim cell As Range
    
        Application.ScreenUpdating = False
        
            If Not Intersect(Target, Range("B28:B46")) Is Nothing Then
                For Each cell In Target
                    If cell.Value = "" Then
                        cell.Offset(1).EntireRow.Hidden = True
                    Else
                        cell.Offset(1).EntireRow.Hidden = False
                    End If
                Next cell
            End If
            
        Application.ScreenUpdating = True
        
End Sub