Я верю, что это то, что вы хотите.Когда значение в A1
обновляется, оно сначала проверяет, является ли запись датой.Если запись недействительна, вы получите первый код MsgBox
.
Если запись является допустимой датой, пользователю будет предложено отправить электронное письмо.Если они выберут No
, макрос закончится.Если они выберут Yes
, ваш Email Sub начнет выполняться.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Response As String
If Not IsDate(Range("A1").Value) Then
MsgBox "Plase enter a valid date in A1"
Else
Response = MsgBox("Do you want to send email?", vbYesNo)
If Response = vbYes Then Call Email
End If
End Sub
Если вы не хотите, чтобы пользователь выбирал Yes
или No
для отправки электронного письма, и вы хотите, чтобы это произошло, как только запись в A1
была проверенав качестве даты, затем измените свой оператор IF на следующее:
If Not IsDate(Range("A1").Value) Then
MsgBox "Plase enter a valid date in A1"
Else
Call Email
End If
Примечание:
Вы также должны обновить его, чтобы оно выполнялось только тогда, когда определенный диапазон (или, возможно, отдельная ячейка вэтот случай) изменен.В противном случае макрос сработает при изменении ЛЮБОЙ ячейки.Вместо этого определите диапазон, который должен запускать этот макрос, а затем вызовите макрос, когда измененная ячейка перекрывается (или Intersects
) с предварительно определенным диапазоном.