2015-12-29 2 views
0

Моя проблема в том, что я написал все коды, один из которых не будет работать. Он не дает ошибку, но не будет электронной почты, сгенерированной из Sub GenerateEmail. Однако, если я удалю один из кода While Wend, другие работают (я тестировал их один за другим). Короче говоря, один из них не будет работать, если все коды While Wend имеются. Я не уверен, что происходит. Любая помощь приветствуется. Я попытался найти похожие ситуации, но не успел.Код Excel VBA не работает полностью, если некоторые части не удалены

Мой код:

Sub CaseCreation() 
Dim subjectTitleEABS As String 
Dim subjectTitleCCC As String 
Dim subjectTitleRR As String 
Dim subjectTitleTERM As String 
Dim rowCount As String 
rowCount = 2 

While Sheets("Extended Abs").Range("B" & CStr(rowCount)).Value <> "" 
If Sheets("Extended Abs").Range("A" & CStr(rowCount)).Value = "" Then 
subjectTitleEABS = Sheets("Extended Abs").Range("K" & CStr(rowCount)).Value 
Call GenerateEmail(subjectTitleEABS) 
End If 
rowCount = rowCount + 1 
Wend 

While Sheets("Contractual Conditions Change").Range("B" & CStr(rowCount)).Value <> "" 
If Sheets("Contractual Conditions Change").Range("A" & CStr(rowCount)).Value = "" Then 
subjectTitleCCC = Sheets("Contractual Conditions Change").Range("L" & CStr(rowCount)).Value 
Call GenerateEmail(subjectTitleCCC) 
End If 
rowCount = rowCount + 1 
Wend 

While Sheets("Resource Requests").Range("B" & CStr(rowCount)).Value <> "" 
If Sheets("Resource Requests").Range("A" & CStr(rowCount)).Value = "" Then 
subjectTitleRR = Sheets("Resource Requests").Range("M" & CStr(rowCount)).Value 
Call GenerateEmail(subjectTitleRR) 
End If 
rowCount = rowCount + 1 
Wend 

While Sheets("Terminations").Range("B" & CStr(rowCount)).Value <> "" 
If Sheets("Terminations").Range("A" & CStr(rowCount)).Value = "" Then 
subjectTitleTERM = Sheets("Terminations").Range("K" & CStr(rowCount)).Value 
Call GenerateEmail(subjectTitleTERM) 
End If 
rowCount = rowCount + 1 
Wend 
+0

Какой цикл создает неожиданное поведение? Что оценивает условие WHILE для этого цикла? – NoChance

+0

Это будет последний цикл, который ведет себя таким образом. Я не уверен, что вы имели в виду по второму вопросу. Однако у меня такое чувство, что Джейсон ответил, что он ведет себя так. – Cubed

ответ

1

Только первый Пока/Венд никогда не будет выполнен. Если у вас есть 5 строк, например, ваш второй будет начинаться с rowCount 6. Вам необходимо сбросить счетчик между каждым While/Wend.

+0

Будет ли это работать, если я использую разные rowCounts для каждого While/Wend? Не на ноутбуке, чтобы проверить это. – Cubed

+0

Да, либо сбросьте свой rowCount, либо используйте отдельные. –

+0

Хорошо, за быстрый ответ! – Cubed

Смежные вопросы