Thứ sáu, 01 tháng 2019
  0 Trả lời
  3.2 nghìn lượt truy cập
0
Bình chọn
Undo
Chào,
Tôi mới tham gia VBA. Tôi đã viết mã để gửi email nếu có sự thay đổi giá trị ô trong cột F và mã hoạt động tốt. Nhưng tôi muốn đảm bảo rằng sổ làm việc được lưu trước khi gửi email. Nội dung văn bản email phải bao gồm giá trị ô tham chiếu, là giá trị từ cột A của hàng đã thay đổi giá trị. Vui lòng không sử dụng tin nhắn, nó sẽ không hoạt động với sổ làm việc. Sổ làm việc có một biểu mẫu và nó sẽ tải giá trị đầu vào vào các ô được chỉ định. Mã hoạt động tốt với biểu mẫu. Nhưng nếu ai đó truy cập trang tính và cập nhật giá trị theo cách thủ công, email sẽ được gửi đến người dùng, điều mà tôi không muốn cho đến khi tệp được lưu. Hãy giúp tôi! Cảm ơn trước.

Private Sub Worksheet_Change (ByVal Target As Range)
Dim s1, s2, s3, s4, s5, s6 as Range
Đặt s1 = Range ("F1310: F1334")
Đặt s2 = Range ("F1426: F1450")
Đặt s3 = Range ("F1339: F1363")
Đặt s4 = Range ("F1455: F1479")
Đặt s5 = Range ("F1368: F1392")
Đặt s6 = Range ("F1397: F1421")
On Error Resume Next
If Target.Cells.Count> 1 Then Exit Sub
'tìm giá trị đã thay đổi trong cột F
Nếu Intersect (Target, Union (s1, s2, s3, s4, s5, s6)) Không có gì thì Thoát Sub
Nếu IsNumeric (Target.Value) và Target.Value <> "" thì
Dim xOutApp làm đối tượng
Làm mờ xOutMail làm đối tượng
Dim xMailBody dưới dạng chuỗi
Làm mờ xMailText dưới dạng chuỗi
Đặt xOutApp = CreateObject ("Outlook.Application")
Đặt xOutMail = xOutApp.CreateItem (0)
'giá trị chỉ mục từ cột A của hàng mà giá trị đó đã thay đổi thành được bao gồm trong nội dung thư
xMailText = Target.Offset (, -5) .Value
xMailBody = "Xin chào" & vbNewLine & vbNewLine & _
"Hóa đơn đã nhận cho" & xMailText & vbNewLine & vbNewLine & _
"Cảm ơn" & vbNewLine & vbNewLine & _
"Ông J"
On Error Resume Next
Với xOutMail
.To = ""
.CC = ""
.BCC = ""
.Subject = "Hóa đơn đã nhận"
.Body = xMailBody
.Gửi
Kết thúc với
Về lỗi GoTo 0
Đặt xOutMail = Không có gì
Đặt xOutApp = Không có gì
Cuối Nếu
End Sub
Không có câu trả lời cho bài viết này.