Excel 对于电子邮件宏,无下一个错误

Excel 对于电子邮件宏,无下一个错误,excel,excel-2007,vba,Excel,Excel 2007,Vba,您好,我这里的代码返回了一个错误“For without Next”,它在底部高亮显示了end sub 为什么会这样?我只是想在邮件正文中插入某些单元格的值 有人能帮忙吗 Sub Notify() Dim name, email, evnt, status As Range Dim SigString As String Dim Signature As String SigString = Environ("appdata") & _

您好,我这里的代码返回了一个错误“For without Next”,它在底部高亮显示了end sub

为什么会这样?我只是想在邮件正文中插入某些单元格的值

有人能帮忙吗

Sub Notify()
    Dim name, email, evnt, status As Range
    Dim SigString As String
    Dim Signature As String

        SigString = Environ("appdata") & _
                "\Microsoft\Signatures\Will.txt"

    If Dir(SigString) <> "" Then
        Signature = GetBoiler(SigString)
    Else
        Signature = ""
    End If

    For Each name In Range(("B2"), Range("B2").End(xlDown))
    For Each email In Range(("C2"), Range("C2").End(xlDown))
    For Each evnt In Range(("E2"), Range("E2").End(xlDown))
    For Each status In Range(("F2"), Range("F2").End(xlDown))

    On Error Resume Next

        With CreateObject("Outlook.Application").CreateItem(0)
            .To = email.Value
            .CC = email.Offset(0, 1).Value
            .Subject = "Information You Requested"
            .Body = "Dear " & name.Value & "," & vbNewLine & vbNewLine & _
                "As you may know the 2014 race started on November 4th and will be open until November 15th in order for you to select your candidate." & vbNewLine & vbNewLine & _
                "Your 2014 election is now On Hold since you have a previous " & evnt.Value & "event with a " & status.Value & "status in Workday. " & vbNewLine & vbNewLine & _
                "In order for you to be able to finalize your Elections you need to finalize the event above as soon as possible." & vbNewLine & vbNewLine & _
                "If you have any questions about this task please call us at 1-877-777-7777 option 8" & vbNewLine & vbNewLine & _
                "Regards" & vbNewLine & vbNewLine & _
                "Department"
            .Display
            '.Attachments.Add "C:\test.txt"
            '.Send
        End With
    Next
End Sub

Function GetBoiler(ByVal sFile As String) As String
    'Dick Kusleika
    Dim fso As Object
    Dim ts As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.GetFile(sFile).OpenAsTextStream(1, -2)
    GetBoiler = ts.readall
    ts.Close
End Function
子通知()
Dim名称、电子邮件、evnt、状态范围
字符串作为字符串
作为字符串的数字签名
SigString=Environ(“appdata”)&_
“\Microsoft\Signatures\Will.txt”
如果Dir(SigString)“,则
Signature=GetBoiler(SigString)
其他的
Signature=“”
如果结束
对于范围((“B2”)中的每个名称,范围(“B2”)。结束(xlDown))
对于范围((“C2”)内的每封电子邮件,范围(“C2”)。结束(xlDown))
对于范围内的每个evnt((“E2”)、范围(“E2”)。结束(xlDown))
对于范围内的每个状态((“F2”)、范围(“F2”)。结束(xlDown))
出错时继续下一步
使用CreateObject(“Outlook.Application”).CreateItem(0)
.To=电子邮件.Value
.CC=电子邮件.Offset(0,1).Value
.Subject=“您请求的信息”
.Body=“亲爱的”&name.Value&“,”&vbNewLine&vbNewLine&_
“您可能知道,2014年的比赛将于11月4日开始,并将持续到11月15日,以便您选择您的候选人。”&vbNewLine&vbNewLine&_
“您的2014年选举现在处于暂停状态,因为您之前有一个带有“&status.Value&”工作日状态的“&evnt.Value&”事件。&vbNewLine&vbNewLine&_
“为了使您能够完成您的选举,您需要尽快完成上述活动。”&vbNewLine&vbNewLine&_
“如果您对此任务有任何疑问,请致电1-877-777-7777选项8”&vbNewLine&vbNewLine&_
“问候”&vbNewLine&vbNewLine&_
“部门”
.展示
'.Attachments.Add“C:\test.txt”
’发送
以
下一个
端接头
函数GetBoiler(ByVal sFile作为字符串)作为字符串
“迪克·库斯利卡
作为对象的Dim fso
将T作为对象
设置fso=CreateObject(“Scripting.FileSystemObject”)
设置ts=fso.GetFile(sFile).OpenAsTextStream(1,-2)
GetBoiler=ts.readall
关闭
端函数

每个
有4个
,但只有一个
下一个

下一步你需要另外3个
。看这个

Sub Notify()
    '
    '~~> Rest of the code
    '
    For Each Name In Range(("B2"), Range("B2").End(xlDown))
        For Each Email In Range(("C2"), Range("C2").End(xlDown))
            For Each evnt In Range(("E2"), Range("E2").End(xlDown))
                For Each Status In Range(("F2"), Range("F2").End(xlDown))
                    '
                    '~~> Rest of the code
                    '
                Next
            Next
        Next
    Next
End Sub

用于代码缩进-它将显示级别,并使匹配if/endif和其他类似构造更容易。它可以在Office2007和2010中使用,但网站上没有显示这些内容。谢谢!!!现在我没有得到错误,但宏只是在名称之间不断循环,它不会停止…它会停止:)只是你循环了这么多次。我也不鼓励您使用
xlDown
查找最后一行。你可能想知道我会在开头插入代码吗?我的范围是什么?<代码>范围((b2))、范围(“b2”)。(XLDUN)< /C> >将变成类似“代码>范围(“B2:B”和LROW)< /代码>。如果您有大量的行,那么您可能需要考虑使用数组吗?对不起,响应延迟,但我仍然不能使它正常工作。我将不得不继续尝试调整代码,直到我得到它的工作。。。