Ниже код протестирован и работает как положено. Список обновлений:
1) Для ссылки на лист Thisworkbook.Sheets("Sheet1")
, который я затемнил как ws
2) Обновлен totalrow
Расчет
3) Поскольку вы действуете только на один результат оператора IF
, вы можете сжать до 1 строки.
4) Добавьте Option Explicit
, чтобы перехватывать ошибки, такие как замена totalrow
на rowtotal
(этот также поймал бы вашу ссылочную ошибку листа)
5) Отрегулирован приращение i (по умолчанию 1, нет необходимости указывать Step 1
)
Это проверено и работает нормально с моей стороны.
Option Explicit
Sub forlogic()
Dim totalrow As Long, i As Long
Dim startdate As Date, mydate As Date
Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1")
totalrow = ws.Range("A" & ws.Rows.Count).End(xlUp).Row
mydate = Date - 90
For i = 1 To totalrow
startdate = Format(ws.Range("E" & i).Value2, "mm/dd/yyyy")
If mydate > startdate Then ws.Range("M" & i).Value = "Expired"
Next i
End Sub