The Visual Basic Do While Loop


The Visual Basic Do While Loop

The Do While loop repeatedly executes a section of code while a specified condition continues to evaluate to True. This is shown in the following subroutine, where a Do While loop is used to print out all values of the Fibonacci Sequence until the values exceed 1,000 :
' Subroutine to list the Fibonacci series for all values below 1,000
Sub Fibonacci()
Dim i As Integer      ' counter for the position in the series
Dim iFib As Integer       ' stores the current value in the series
Dim iFib_Next As Integer ' stores the next value in the series
Dim iStep As Integer ' stores the next step size
' Initialise the variables i and iFib_Next i = 1
iFib_Next = 0
' Do While loop to be executed as long as the value
' of the current Fibonacci number exceeds 1000
Do While iFib_Next < 1000
    If i = 1 Then
        ' Special case for the first entry of the series
        iStep = 1
        iFib = 0
    Else
        ' Store the next step size, before overwriting the
        ' current entry of the series
        iStep = iFib
        iFib = iFib_Next
    End If
    ' Print the current Fibonacci value to column A of the
    ' current Worksheet
    Cells(i, 1).Value = iFib
    ' Calculate the next value in the series and increment
    ' the position marker by 1
    iFib_Next = iFib + iStep
    i = i + 1
Loop
End Sub
It can be seen that, in the above example, the condition iFib_Next < 1000 is executed at the start of the loop. Therefore, if the first value of iFib_Next were greater than 1,000, the loop would not be executed at all.
Another way that you can implement the Do While loop is to place the condition at the end of the loop instead of at the beginning. This causes the loop to be executed at least once, regardless of whether or not the condition initially evaluates to True. This makes no difference to the above Fibonacci Sequence loop, as the variable iFib_Next has been initialised to 0 and so the 'While' condition is always satisfied the first time it is tested.
However, if the variable iFib_Next had previously been used for other calculations and was set to a value greater than zero, the initial 'While' condition would be False, and the loop would not be entered. One way to solve this would be to place the condition at the end of the loop, as follows:
Do
  .
  .
  .
Loop While iFib_Next < 1000

Comments

Popular posts from this blog

50 Excel VBA Oral Interview Questions