Как остановить выполнение команды, когда cell = X - PullRequest
0 голосов
/ 11 апреля 2019

Настройка макроса так, чтобы электронное письмо отправлялось, когда ячейка в строке N = yes, а ячейка в строке J пуста.Если оба эти требования выполнены, электронное письмо отправляется, а затем дата вставляется в строку J (что предотвращает повторный запуск макроса в этой строке).

Приведенный ниже код запускает макрос, даже если есть датав ряду J, и я не знаю почему.

(я начинающий)

Dim OutApp As Object
Dim OutMail As Object
Dim cell As Range

Application.ScreenUpdating = False
Set OutApp = CreateObject("Outlook.Application")

On Error GoTo cleanup
   For Each cell In Columns("H").Cells.SpecialCells(xlCellTypeConstants)
    If cell.Value Like "?*@?*.?*" And _
       LCase(Cells(cell.Row, "N").Value) = "yes" _
       And LCase(Cells(cell.Row, "J").Value) <> Format(Date, "dd/mm/yyyy") Then

        Set OutMail = OutApp.CreateItem(0)

        On Error Resume Next
        With OutMail
            .To = cell.Value
            .Subject = "Review - " & Cells(cell.Row, "C").Value
            .HTMLBody = "<HTML><BODY>Greetings, <br />" & _
            "<br />" & _
            "I hope this email finds you well. <br />" & _
            "<br />" & _
            "We need your review back by " & DateAdd("ww", 3, Date) & ", as we are keen to forward on feedback. <br />" & _
            "<br />" & _
            "Kind regards,</BODY></HTML>"
            .Send
        End With
        On Error GoTo 0
        Cells(cell.Row, "J").Value = Format(Date, "dd/mm/yyyy")
        Set OutMail = Nothing
    End If
   Next cell

cleanup:
    Set OutApp = Nothing
    Application.ScreenUpdating = True
End Sub
...