By kylejohnson95757@gmail.com 在01年2019月XNUMX日星期五
张贴在 Excel
回复 0
0
观点 3.2
投票 0
嗨,
我是 VBA 新手。 如果 F 列中的单元格值发生变化,我编写了一个代码来发送电子邮件,并且代码运行良好。 但我想确保在发送电子邮件之前保存工作簿。 电子邮件文本正文必须包含参考单元格值,即值更改行的 A 列中的值。 请不要使用 msg,它不适用于工作簿。 工作簿有一个表单,它将输入值加载到指定的单元格。 该代码适用于表单。 但是,如果有人进入工作表并手动更新值,电子邮件将发送给用户,在保存文件之前我不希望这样做。 请帮忙! 提前致谢。

私人子Worksheet_Change(按目标的ByVal目标)
将 s1、s2、s3、s4、s5、s6 调暗为范围
设置 s1 = Range("F1310:F1334")
设置 s2 = Range("F1426:F1450")
设置 s3 = Range("F1339:F1363")
设置 s4 = Range("F1455:F1479")
设置 s5 = Range("F1368:F1392")
设置 s6 = Range("F1397:F1421")
出错时继续下一步
如果 Target.Cells.Count > 1 然后退出 Sub
'在 F 列中找到改变的值
如果 Intersect(Target, Union(s1, s2, s3, s4, s5, s6)) 是 Nothing 然后退出 Sub
If IsNumeric(Target.Value) And Target.Value <> "" Then
将 xOutApp 调暗为对象
将 xOutMail 调暗为对象
将 xMailBody 调暗为字符串
将 xMailText 调暗为字符串
设置 xOutApp = CreateObject("Outlook.Application")
设置 xOutMail = xOutApp.CreateItem(0)
'从值更改为包含在邮件正文中的行的 A 列的索引值
xMailText = Target.Offset(, -5).Value
xMailBody = "你好" & vbNewLine & vbNewLine & _
“收到发票” & xMailText & vbNewLine & vbNewLine & _
“谢谢” & vbNewLine & vbNewLine & _
“J先生”
出错时继续下一步
使用 xOutMail
.To = "test@gmail.com"
.CC =“”
.BCC =“”
.Subject = "收到发票"
.Body = xMailBody
。发送
结束
出错时转到 0
设置 xOutMail = 无
设置 xOutApp = 无
结束如果
END SUB
查看全文