Все еще неясно
Это еще не рабочий код!
Если вы не собираетесь запускать этот код на разных листах, вам следует заменить ActiveSheet на индексный номер, как вы это сделали с Worksheets(2).Тем не менее, предпочтительнее использовать имена рабочих листов, но лучше всего использовать имена кодов.
Вам нужно будет определить имя (или индекс) «OtherWorksheet», которое я использовал, и настроить его столбец и строку.Раскомментируйте прокомментированные части только после того, как код заработал.
Я заставляю этот код работать, если вы предоставляете имена или индексы всех рабочих листов и точную «серию из 3» данных, например A1,B1 на листе 1, рабочий лист (1), рабочий лист («главный») или ActiveSheet и C2 на листе 3, рабочий лист (3) или рабочий лист («ведомый»).
Option Explicit
Sub Remove_Future_Dates()
Dim Firstrow As Long
Dim LastRow As Long
Dim Lrow As Long
Dim CalcMode As Long
Dim ViewMode As Long
' With Application
' CalcMode = .Calculation
' .Calculation = xlCalculationManual
' .ScreenUpdating = False
' End With
On Error GoTo SafeExit
With ThisWorkbook.Worksheets(2)
Firstrow = .UsedRange.Cells(1).Row
LastRow = .Worksheets(2).Cells(Rows.Count, "A").End(xlUp).Row
End With
With ActiveSheet
For Lrow = LastRow To Firstrow Step -1
With .Cells(Lrow, "A")
If Not IsError(.Value) Then
If .Value = "31" _
And .Offset(0, 1) > _
ThisWorkbook.Worksheets("OtherWorksheet") _
.Cells(Lrow + 1, "C") _
Then .EntireRow.Delete
End If
End With
Next Lrow
End With
SafeExit:
' With Application
' CalcMode = .Calculation
' .Calculation = xlCalculationManual
' .ScreenUpdating = True
' End With
End Sub