Excel 如果单元格的值为=1,则将电子邮件地址添加到Outlook电子邮件中

Excel 如果单元格的值为=1,则将电子邮件地址添加到Outlook电子邮件中,excel,vba,email,outlook,Excel,Vba,Email,Outlook,我试图获得一些帮助,向E列中有“1”的任何人发送电子邮件。我有一份包含一系列员工及其电话号码的工作表。在他们的电话号码后面是他们希望得到通知的事件列表。如果我在他们的名字后面的一列中加1,我希望他们的电子邮件地址添加到电子邮件中 列标题类似于A=姓,B=名,C=电话号码,D=电子邮件地址,E=事件1,F=事件2,G=事件3等等 我能够获得从设置范围中提取所有电子邮件地址的电子邮件代码,但我不知道如何添加if命令以在其中一个事件列(E、F、G…)中查找设置值。它需要在整个范围内循环,然后仅为在其中

我试图获得一些帮助,向E列中有“1”的任何人发送电子邮件。我有一份包含一系列员工及其电话号码的工作表。在他们的电话号码后面是他们希望得到通知的事件列表。如果我在他们的名字后面的一列中加1,我希望他们的电子邮件地址添加到电子邮件中

列标题类似于A=姓,B=名,C=电话号码,D=电子邮件地址,E=事件1,F=事件2,G=事件3等等

我能够获得从设置范围中提取所有电子邮件地址的电子邮件代码,但我不知道如何添加if命令以在其中一个事件列(E、F、G…)中查找设置值。它需要在整个范围内循环,然后仅为在其中一个事件列中具有设置值的选定个人提取地址

以下是我目前的代码:

Dim OutApp As Object
Dim OutMail As Object
Dim strto As String, strcc As String, strbcc As String
Dim strsub As String, strbody As String
Dim emailRng As Range, cl As Range
Dim sTo As String

Set emailRng = Worksheets("Sheet1").Range("D1:D500")

For Each cl In emailRng
    sTo = sTo & ";" & cl.Value
Next

sTo = Mid(sTo, 2)


Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)


strto = sTo

strcc = ""
strbcc = ""
strsub = "'NOTIFICATION'  - " & "Notification"
strbody = "<img src=Z:\Logo2.jpg width=624 height=74>" & _
          "<font size=2 font face=Verdana color=black>" & "<br>" & _
          "The following notification was received:</B><br><br>" & _
          "COPY AND PAST NOTIFICATION RECEIVED HERE" & "<br><br>" & _
          "<b>Control Center</b><br><br>"


With OutMail
    '.SentOnBehalfOfName = ""
    .to = strto
    .cc = strcc
    .bcc = strbcc
    .Subject = strsub
    'You can add a file to the mail like this
    .HTMLBody = strbody
    .Display    ' or use .Send
End With

Set OutMail = Nothing
Set OutApp = Nothing
Dim OutApp作为对象
将邮件变暗为对象
Dim strto作为字符串,strcc作为字符串,strbcc作为字符串
Dim strsub作为字符串,strbody作为字符串
变光范围为零,cl范围为零
将sTo设置为字符串
设置emailRng=工作表(“表1”)。范围(“D1:D500”)
对于emailRng中的每个cl
sTo=sTo&“;”和cl.值
下一个
sTo=Mid(sTo,2)
Set-OutApp=CreateObject(“Outlook.Application”)
Set-OutMail=OutApp.CreateItem(0)
strto=sTo
strc=“”
strbcc=“”
strsub=“‘通知’-”和“通知”
strbody=”“&_
“&”
”和_ “收到以下通知:

”&_ “此处收到的副本和过去的通知”&“

”&_ “控制中心

” 发邮件 '.SentonBehalfName=“” .to=strto .cc=strcc .bcc=strbcc .Subject=strsub '您可以像这样向邮件中添加文件 .HTMLBody=strbody .Display'或use.Send 以 发送邮件=无 设置应用程序=无
基本答案是:

For Each cl In emailRng
    If cl.Offset(,1) = 1 Then sTo = sTo & ";" & cl.Value
Next
在这里,您要检查是否在电子邮件地址之外的1列(E列中的事件1)中检查通知

但是,由于您声明您可能有n个事件,因此您需要一种方法来确定您要为哪个事件发送电子邮件。我不知道你打算如何处理这个问题,但你可以,例如,从另一个Sub调用Sub,传递事件号,并将其用作偏移量

所以

然后在你的潜艇里,它会说

Sub SendEventEmail(n as Long)
Rem n is the Event Number

Rem Your Code ... 

For Each cl in emailRng
     If cl.Offset(,n) = 1 Then sTo = sTo & ";" & cl.Value
Next

Rem Rest of code ... 

End Sub
Sub SendEventEmail(n as Long)
Rem n is the Event Number

Rem Your Code ... 

For Each cl in emailRng
     If cl.Offset(,n) = 1 Then sTo = sTo & ";" & cl.Value
Next

Rem Rest of code ... 

End Sub