How about just adding another condition to your IF statement. You already have a condition to hide rows if they are "-", so let's add a condition to unhide rows that are NOT "-"

Sub HideRows()
Dim cell As Range
For Each cell In Range("A4:A20")
If (cell.Value) = "-" Then
cell.EntireRow.Hidden = True
ElseIf cell.Value <> "-" Then
cell.EntireRow.Hidden = False
End If
Next
End Sub