Я видел ваш другой пост, и я не думаю, что именно так вы должны строить свою панель инструментов. По сути, вы создаете копию своего другого листа. Кажется, что Advance Filter
было бы лучше подходит здесь.
Если вы используете текущий метод, это определит наименьшую используемую ячейку в ваших столбцах и скроет строки над этой ячейкой на основе ваших критериев. Я бы добавил командную кнопку с именем что-то вроде «Обновить мой тире» и связал бы ее с этим макросом.
Option Explicit
Sub HideRow()
Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1")
Dim LRowC, LRowD, LRowF, LRowH, LRow As Long
LRowC = ws.Range("C" & ws.Rows.Count).End(xlUp).Row
LRowD = ws.Range("D" & ws.Rows.Count).End(xlUp).Row
LRowF = ws.Range("F" & ws.Rows.Count).End(xlUp).Row
LRowH = ws.Range("H" & ws.Rows.Count).End(xlUp).Row
LRow = Application.WorksheetFunction.Max(LRowC, LRowD, LRowF, LRowH)
Dim i As Long
Application.ScreenUpdating = False
ws.Rows.Hidden = False
For i = LRow To 2 Step -1
If ws.Range("C" & i).Text = "" And ws.Range("D" & i).Text = "" And ws.Range("F" & i).Text = "" And ws.Range("H" & i).Text = "" Then
ws.Rows(i).EntireRow.Hidden = True
End If
Next i
Application.ScreenUpdating = True
End Sub