2017-06-15 57 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沒有初始化,所以我添加了這些變量的初始化。 –