Вы на самом деле не используете x
в вашем цикле.Если бы вы это сделали, это выглядело бы так:
For x = EngHisTable.ListRows.Count To 1 Step -1
If EngHisTable.ListRows(x).Range(, 15) = WeekCode Then
EngHisTable.ListRows(x).Delete
End If
Next x
В качестве альтернативы, вы можете отфильтровать, а затем удалить все строки, соответствующие WeekCode
, за один раз, вместо того, чтобы зацикливать строку за строкой:
Sub MyDelete()
Dim EngHisTable As ListObject
Set EngHisTable = Sheets("Historic").ListObjects("Table2")
Dim WeekCode As String
WeekCode = Sheets("Weekly").Range("B5").Value
With EngHisTable
.Range.AutoFilter Field:=15, Criteria1:=WeekCode
On Error Resume Next
Dim rngToDelete As Range
Set rngToDelete = .DataBodyRange.SpecialCells(xlCellTypeVisible)
On Error GoTo 0
.AutoFilter.ShowAllData
If Not rngToDelete Is Nothing Then rngToDelete.Delete xlShiftUp
End With
End Sub