VBA Excel在电子邮件形式中包含IF语句



>我似乎无法在我的代码中包含 IF 公式,在将电子邮件发送给我的 Excel 文件 R2 列中包含的某些人的部分中

我想从.CC电子邮件yyy@gmail.com中排除该用户是否已经在 R2 列中(因此在 .To 中)。如何编写代码?否则,我的用户yyy@gmail.com会收到两次电子邮件,一次是因为用户处于.To中,一次是因为他处于.CC

.To = Worksheets("MyData").Range("R2").Value
.CC = "yyy@gmail.com; zzz@gmail.com; aaa@gmail.com"
.BCC = ""
.Subject = "TEST"
.Body = "Hello"
.Attachments.Add ThisWorkbook.Path & "ME" & Check & " " & Format(Now, "dd-mmm-yy") & ".xlsx"
.Display
'.Send
这样做

的代码是什么?

我不会为此使用 if 语句。相反,我会在设置两者后从抄送行中删除每个收件人

.to = "yyy@gmail.com"
.cc = "yyy@gmail.com; zzz@gmail.com; aaa@gmail.com"
For Each addr In Split(.to, ";")
    .cc = Replace(.cc, addr, vbNullString)
Next addr
.BCC = ""
.Subject = "TEST"
.Body = "Hello"
.Attachments.Add ThisWorkbook.Path & "ME" & Check & " " & Format(Now, "dd-mmm-yy") & ".xlsx"
.Display

for 循环拆分分号字符;上的 to 行,然后遍历每个分号字符,将其从.cc中删除 这将处理.To行和.CC行中的单个和多个收件人

你的意思是这样的:

If Worksheets("MyData").Range("R2").Value2 = "yyy@gmail.com" Then
    .CC = "zzz@gmail.com; aaa@gmail.com"
Else
    .CC = "yyy@gmail.com; zzz@gmail.com; aaa@gmail.com"
End If

只需使用 Replace 即可从列表中删除.To中的地址.CC

.To = Worksheets("MyData").Range("R2").Value
.CC = Replace("yyy@gmail.com; zzz@gmail.com; aaa@gmail.com", .To, vbNullString)

通过这种方式,地址被修剪并比较不区分大小写:

    .To = Worksheets("MyData").Range("R2").Value
    .CC = ""
    Dim check As Variant
    For Each check In Split("yyy@gmail.com; zzz@gmail.com; aaa@gmail.com", ";")
        If Not InStr(1, .To, Trim(check), vbTextCompare) > 0 Then _
            .CC = .CC & "; " & check
    Next check

最新更新