VBA Date + для логики - PullRequest
0 голосов
/ 26 июня 2018

может кто-нибудь мне помочь? Кажется, моя логика не работает вообще, потому что она возвращает меня в 12:00 для начала. Вот мой код

Sub forlogic()
    Dim i As Single
    Dim totalrow As Double
    Dim startdate As Date
    Dim mydate As Date

    totalrow = Sheet1.Range("A1", Sheet1.Range("A1").End(xlDown)).Rows.Count
    mydate = Date

    Debug.Print mydate

    mydate = mydate - 90

    Debug.Print mydate

    For i = 1 To i = rowtotal Step 2
        startdate = Format(Range("E" & i).Value, "short date")
        startdate = Format(Date, "mm/dd/yyyy")

        If mydate > startdate Then
            Range("M" & i).Value = "Expired"
        End If

        i = i + 1
    Next i
    Debug.Print startdate
End Sub

он продолжает возвращать меня

12: 00: 00 AM для начальной даты

1 Ответ

0 голосов
/ 26 июня 2018

Ниже код протестирован и работает как положено. Список обновлений:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...