在我的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
代码发送邮件,但它将邮件发送给列表中的所有人。我怎样才能解决这个问题,只有价值为“否”的人才会收到邮件?
感谢您的帮助
答案 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
声明。