【发布时间】:2019-04-29 21:42:35
【问题描述】:
我目前创建了一个代码,一旦在特定单元格中满足某个值,它将向特定个人发送 1 封电子邮件。
我需要宏搜索整个列(E 列)并在每次满足值(在 E 中)时发送一封电子邮件(在 D 列中找到的电子邮件地址),但每个 ID 号仅一次(找到在 C 列)
example:
A B C D E F G
John Smith 123659 john.smith@gmail.com 330 NB Moncton
John Smith 123659 john.smith@gmail.com 330 NB Shediac
所以只有一封电子邮件会发出,因为满足的值是 330,并且两个条目都来自同一个 ID 号
这是我目前拥有的代码,但它是特定于一个单元格的
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Application.Intersect(Range("E2"), Target) Is Nothing Then
If IsNumeric(Target.Value) And Target.Value = 330 Then
Call renewalemail
End If
End If
End Sub
Sub renewalemail()
Set xOutApp = CreateObject("Outlook.Application")
Set xOutMail = xOutApp.CreateItem(0)
xMailBody = "Hi," & vbNewLine & vbNewLine & _
"Your registration to the National Transfer Inventory is up for renewal" & vbNewLine & _
"Every year, you are required to review your selection(s) and renew your registration" & vbNewLine & vbNewLine & _
"Please refer to the frequently asked questions (FAQ) document for more details (RDIMS# 5757800)" & vbNewLine & vbNewLine & _
"Thank you"
On Error Resume Next
With xOutMail
.SentOnBehalfOfName = "XXX.ServiceCentre-CentredeService.XXX@gmail.com"
.To = Sheets("Inventory").Range("D2").Value
.CC = ""
.BCC = ""
.Subject = "RENEWAL NOTIFICATION - National Transfer Inventory / AVIS de RENOUVELLEMENT - Répertoire de Mutation"
.Body = xMailBody
.Display
End With
On Error GoTo 0
Set xOutMail = Nothing
Set xOutApp = Nothing
End Sub
任何帮助将不胜感激
谢谢你
Sub Cmdrenewal_Click()
Dim ws As Worksheet
Dim r As Range
Set ws = Worksheets("Inventory")
With ws
lr = .Range("C" & Rows.Count).End(xlUp).Row
For I = lr To 1 Step -1
If .Cells(I, "S") = 383 Then
Call renewalemail
End If
Next I
End With
On Error Resume Next
End Sub
【问题讨论】:
-
你有什么尝试让你说 ...满足值(在 E 中)但每个 ID 号仅满足一次 ...
-
我能够做到以下几点(见上面添加的代码)......代码搜索工作表并为符合条件的每一行发送一封电子邮件(383)......我仍然需要编码来识别位于该行 c 列中的电子邮件地址并发送到该地址。我还需要每个 ID 只发送一封电子邮件 ....因此,如果 ID 为 3569 的个人有 10 行符合 383 个条件.....使用 c 列中的地址发送一封电子邮件通知而不是 10 封电子邮件