0

今天刚开始尝试VBA。创建 Excel 表来跟踪 SOLD、PENDING、LOST,这将允许销售人员单击按钮一次将组电子邮件发送到一个类别。经过大量搜索后,我发现一些代码可以很好地通过检查列来发送群组电子邮件,以确保存在正确的地址。我发现了一些我认为可以检查“作业状态”列的其他代码,以便只选择“已售出”或其他任何内容作为电子邮件。我是一个无知的初学者,需要帮助。这是在我添加 - If Sh.Cells(Target.Row, 7) = "PENDING" Then - 部分之前有效的代码。任何帮助将不胜感激。谢谢!

Private Sub CommandButton1_Click()
Dim cell As Range
 Dim strto As String
 For Each cell In ThisWorkbook.Sheets("Sales 2013").Range("E3:E500")
 If cell.Value Like "?*@?*.?*" Then
    If Sh.Cells(Target.Row, 7) = "PENDING" Then
     strto = strto & cell.Value & ";"
    End If
 End If
 Next cell
 If Len(strto) > 0 Then strto = Left(strto, Len(strto) - 1)

Application.ScreenUpdating = False
 Set OutApp = CreateObject("Outlook.Application")
 OutApp.Session.Logon

 On Error GoTo cleanup
 Set OutMail = OutApp.CreateItem(0)
 On Error Resume Next
 With OutMail
 .To = "Anchor Sales"
 .Bcc = strto
 .Subject = "Enter subject here"
 .Body = "" ' EMPTY FOR NOW
 'USE THIS FOR ENTERING NAMES OF RECIPIENTS IN BODY TEXT "here"
 '"Dear" & Cells(cell.Row, "A").Value _
 & vbNewLine & vbNewLine & _
 "Enter body text " & _
 "here"
 'You can add files also like this
 '.Attachments.Add ("C:\test.txt")
 '.Send 'Or use Display
 .Display
 End With
 On Error GoTo 0
 Set OutMail = Nothing
cleanup:
 Set OutApp = Nothing
 Application.ScreenUpdating = True
End Sub

Private Sub CommandButton2_Click()

End Sub

请帮忙!

4

1 回答 1

0

当然,我更愿意每人发送一封邮件(如果收件人彼此不认识),但让我们继续处理您的问题。

你只需要小改动:

Private Sub CommandButton1_Click()
Dim cell As Range
 Dim strto As String
 For Each cell In ThisWorkbook.Sheets("Sales 2013").Range("E3:E500")
 If cell.Value = "PENDING" Then strto = strto & cell.offset(0, 1).value & ";" 

我不确定您是否需要“If cell.Value Like”部分?@? .?*" " 或者如果那是从您找到的代码中复制粘贴...如果您需要它,最后一行必须替换为

 If cell.Value Like "?*@?*.?*" and cell.Value = "PENDING" Then strto = strto & cell.offset(0, 1).value & ";"  

    'in Offset(0,1) I assume the mailadress is in the cell next to the cell tested for "pending" 
 Next cell
 If Len(strto) > 0 Then strto = Left(strto, Len(strto) - 1)

其余的,你有它。

问题是由

    If Sh.Cells(Target.Row, 7) = "PENDING" Then

因为你没有“sh”的定义——但你也不需要它。

我希望这有帮助

于 2013-09-13T18:37:33.553 回答