2017-06-15 50 views
0

我想窝两个循环中而做的。如何在一个环境中嵌套两个环?

基本上同时有一个有效的电子邮件,我要检查我是否应该发送电子邮件(Y/N),如果没有 - >循环,如果Y,这里是电子邮件,然后循环。我已经DIM'd一切正常

请看下面的代码。谢谢。

Sub EmailDisplay() 
Do While Email <> vbNullString 
    If Sheets("Mail").Cells(Count, 1).Value = N Then 
    Count = Count + 1 
    Loop 

    If Sheets("Mail").Cells(Count, 1).Value = Y Then 
    Set aOutlook = CreateObject("Outlook.Application") 
    Set aEmail = aOutlook.CreateItem(0) 
    Name = Sheets("Mail").Cells(Count, 2).Value 


Count = Count + 1 'Updates Variable count to continue loop 
Email = Sheets("Mailing").Cells(Count, 1).Value 

End If 

Loop 

End Sub 
+0

现在我看到编译错误 - 第一个循环没有做循环。 – user8167664

+0

那么你有两个if语句,只有一个结束if。你做什么虽然只有在计数后循环。错误是因为你的最终循环没有附加任何东西。 – BerticusMaximus

+0

谢谢BerticusMaximus - 如果我把红色的停止代码件事如果表= Y线,我得到循环的编译错误没有做。但是,他们可以清楚地看到在那里有一个Do。 我也尝试添加在第二次做电子邮件<> vbNullstring,但它似乎并没有工作 – user8167664

回答

0

我从来没有使用Visual Basic中,但试试这个:

Sub EmailDisplay() 
'I added next two line because Count and Email are not initialized 
Count = 1 
Email = Sheets("Mailing").Cells(Count, 1).Value 
Do While Email <> vbNullString 
    If Sheets("Mail").Cells(Count, 1).Value = Y Then 
     Set aOutlook = CreateObject("Outlook.Application") 
     Set aEmail = aOutlook.CreateItem(0) 
     Name = Sheets("Mail").Cells(Count, 2).Value 
    End If 
    Count = Count + 1 'Updates Variable count to continue loop 
    Email = Sheets("Mailing").Cells(Count, 1).Value 
Loop 
End Sub 

我不认为你需要在这里嵌套循环。在这里,我们有一个循环与你的两个case的if块。 BTW。如果你需要嵌套循环,你需要确保每个“Do While”有一个且只有一个匹配的“Loop”

+0

谢谢你这个达比萨克拉瓦 - 我会尝试它并报告回来。非常感谢。 – user8167664

+0

它不起作用 - 例如,如果Count = 1是N,那么我希望它进入Count = 2并测试它是否也是N.我认为嵌套循环是必要的 - 我不希望它如果Count = 2也是N,则从Count = 1 = N到Count = 2并继续发送电子邮件。您怎么看? – user8167664

+0

我改变了建议的解决方案中的代码,以便您可以再试一次。但我必须说,我不明白你想达到什么目的。问题可能是变量Count和Email没有初始化,所以我添加了这些变量的初始化。 –