By Кайледжонсон95757@gmail.com в пятницу, 01, март, 2019
Опубликовано в Excel
Ответы 0
Лайк 0
Просмотры 3.2K
Голосов 0
Здравствуйте,
Я новичок в VBA. Я написал код для отправки электронного письма, если в столбце F изменилось значение ячейки, и этот код отлично работает. Но я хочу убедиться, что рабочая книга сохранена до отправки электронного письма. Текст сообщения электронной почты должен включать значение опорной ячейки, которое является значением из столбца A строки измененного значения. Пожалуйста, не используйте msg, это не будет работать с книгой. Рабочая книга имеет форму, и она будет загружать входное значение в указанные ячейки. Код отлично работает с формой. Но если кто-то войдет в лист и вручную обновит значение, электронное письмо будет отправлено пользователям, чего я не хочу, пока файл не будет сохранен. Пожалуйста помоги! Заранее спасибо.

Private Sub Worksheet_Change (ByVal Target As Range)
Dim s1, s2, s3, s4, s5, s6 Как диапазон
Установите s1 = диапазон («F1310: F1334»)
Установите s2 = диапазон («F1426: F1450»)
Установите s3 = диапазон («F1339: F1363»)
Установите s4 = диапазон («F1455: F1479»)
Установите s5 = диапазон («F1368: F1392»)
Установите s6 = диапазон («F1397: F1421»)
On Error Resume Next
Если Target.Cells.Count > 1, то выйдите из подпрограммы
'найти измененное значение в столбце F
Если Intersect(Target, Union(s1, s2, s3, s4, s5, s6)) ничего не значит, то выйдите из Sub
Если IsNumeric(Target.Value) And Target.Value <> "" Тогда
Dim xOutApp как объект
Dim xOutMail как объект
Dim xMailBody как строка
Dim xMailText как строка
Установите xOutApp = CreateObject("Outlook.Application")
Установите xOutMail = xOutApp.CreateItem(0)
'значение индекса из столбца A строки, значение которого было изменено на включенное в тело письма
xMailText = Цель.Смещение(, -5).Значение
xMailBody = "Привет!" & vbNewLine & vbNewLine & _
"Счет получен за" & xMailText & vbNewLine & vbNewLine & _
"Спасибо" & vbNewLine & vbNewLine & _
"Мистер Джей"
On Error Resume Next
С xOutMail
.Кому = "test@gmail.com"
.CC = ""
.BCC = ""
.Subject = "Счет-фактура получен"
.Body = xMailBody
.Послать
Конец с
По ошибке GoTo 0
Установите xOutMail = Ничего
Установите xOutApp = Ничего
End If
End Sub
Посмотреть сообщение полностью