如果值为“否”,则Excel VBA发送邮件

时间:2018-04-16 08:43:51

标签: excel vba if-statement

在我的excel文件中,我有一个如下所示的表:

|Name|   Mail Address   | Return|
|ABC | abc@example.com  |   no  |
|DEF | def@example.com  |  yes  |
|GHI | ghi@example.com  |   no  |

现在我想向表格中的每一个发送带有VBA的电子邮件,其中“返回”(C)栏中的值为“否”。

我的代码如下:

Private Sub CommandButton2_Click()

    Dim OutApp As Object
    Dim OutMail As Object
    Dim nameList As String

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
    On Error GoTo cleanup

    For i = 2 To 22
        If Sheets("SHEETNAME").Range("C2:C22").Value = "no" Then
            nameList = nameList & ";" & Sheets("SHEETNAME").Range("B" & i).Value
        End If
    Next
        .To = nameList
        .Subject = "Friendly Reminder"
        .Body = "Text"
    End With 

cleanup:
    Set OutApp = Nothing

End Sub

代码发送邮件,但它将邮件发送给列表中的所有人。我怎样才能解决这个问题,只有价值为“否”的人才会收到邮件?

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

For i = 2 To 22循环中,您需要使用i,您将其用作行inside your范围`对象。

变化:

If Sheets("SHEETNAME").Range("C2:C22").Value = "no" Then

为:

If Sheets("SHEETNAME").Range("C" & i).Value = "no" Then

注意:在上面的代码中,您End With没有开放With声明。