H o l a:
Sustituye todas las macros solamente por esta:
Sub filtro()
'Por.Dante Amor
Set h1 = Sheets("Saldos")
u = h1.Range("C" & Rows.Count).End(xlUp).Row
If u < 24 Then u = 24
h1.Range("C24:I" & u).ClearContents
If h1.[D3] = "" Then Exit Sub
If h1.[D4] = "" Then Exit Sub
If h1.[D5] = "" Then Exit Sub
Set rango = Range([D4])
hoja = "" & rango.Cells([D5], 1)
existe = False
For i = 2 To Sheets.Count
If UCase(Sheets(i).Name) = UCase(hoja) Then
existe = True
Exit For
End If
Next
If existe Then
j = 24
Set h2 = Sheets(hoja)
For i = 6 To h2.Range("A" & Rows.Count).End(xlUp).Row
h1.Cells(j, "C") = h2.Cells(i, "B")
h1.Cells(j, "D") = h2.Cells(i, "D")
h1.Cells(j, "E") = h2.Cells(i, "E")
h1.Cells(j, "F") = h2.Cells(i, "F")
h1.Cells(j, "G") = h2.Cells(i, "G")
j = j + 1
Next
Else
MsgBox "Hoja no existe"
End If
End Sub