Mentre loop non termina VBA

Questo è il codice parziale. Fondamentalmente voglio eseguire un ciclo che termina quando TotalHoursNeeded è a 0 o inferiore, o CurrentDate è a 6/30. La variabile totalHoursNeeded è una variabile globale e viene ridotta incrementalmente in runReport di function. Durante runReport, anche currentDate, che è anche una variabile globale, viene anche riassegnato.

Quindi, diciamo che currentDate viene inizializzato come il 3/1/2016 e totalHoursNeeded viene inizializzato come 234. runReport verrà eseguito sulla base di 200 ore, imposta la data corrente come qualcosa di simile al 5/5/2016 e quindi imposterà totalHoursNeeded a essere 34 (200 è il massimo di each report può essere eseguito). Quindi, quello che voglio fare è gestire un'altra relazione, ma invece di essere 200 e 3/1/2016, voglio che sia il 34 e il 5/5/2016.

Il problema è che questi rapporti non possono passare oltre il 6/30/2016; per esempio se ho bisogno di eseguire un rapporto basato su 200 ore e la data di inizio è il 6/23/2016, la data di fine deve essere il 6/30/2016 e la quantità di ore nella relazione deve essere ridotta di conseguenza .

Comunque, il ciclo di tempo sotto non sta terminando

Dim currentDate As Date Dim totalHoursNeeded As Long Dim totalHoursInExtension As Long Dim hoursPerDay As Long While totalHoursNeeded > 0 Or Not (Month(currentDate) = 6 And Day(currentDate) = 30) 'make a new word document object Dim nWord As New Document Set nWord = Documents.Open("c:\document\here", Visible:=False) 'run and save the report On Error GoTo errhandler: 'if the extensions have not been written through 6/30 of any year If Not (Month(currentDate) = 6) And Not (Day(currentDate) = 30) Then 'run a report based on the current row, two worksheets, and word object totalHoursNeeded = totalHoursNeeded - runReport(row, summary, oWorksheet, nWord) saveReport row, totalHoursInExtension, oWorksheet, nWord Else End If ' Close things nWord.Close False Wend 

Solutions Collecting From Web of "Mentre loop non termina VBA"