Excel VBA - Basics videos | Excel VBA Part 15.1 - Do Until and Do While Loops

Posted by Andrew Gould on 06 February 2014

Do Loops in VBA allow you to carry out a set of instructions repeatedly until some kind of condition is met. This video teaches you about the basics of the Do Loop statement including how to write Do Until and Do While loops, where to place your conditional statements and how to exit from a loop. The final part of the video provides a couple of longer examples using Do Loops.

You can increase the size of the video:

Full screen mode for YouTube

You can view the video in full screen mode as shown on the left, using the icon at the bottom right of the frame.

You can also increase the quality of the video:

Changing resolution

You can improve the resolution of the video using another icon at the bottom right of the frame. This will slow down the connection speed, but increase the display and sound quality. This icon only becomes visible when you start playing the video.

Finally, if nothing happens when you play the video, check that you're not using IE in compatibility view.

This page has 1 thread Add post
24 Apr 17 at 11:26


I was wondering if you could help with the following question. Why the Do Loop stops when it comes accross a value of 0 in a table with integer numbers? How can I handle such a case?

Thanks in advance for the help.


24 Apr 17 at 11:56

Hi, what have you written as your Do Until or Do While statement? If you're testing for an empty string as shown in the video then this code will reach the end of the list, even if it contains 0:

    Do Until ActiveCell.Value = ""
        'do something useful
        ActiveCell.Offset(1, 0).Select

If that's not working for you, you could try using the IsEmpty function instead, like so:

    Do Until IsEmpty(ActiveCell.Value)
        'do something useful
        ActiveCell.Offset(1, 0).Select

I hope that helps!

24 Apr 17 at 12:24

Hi thanks for the prompt response. I think I got it..

Excel reads the 0 number as an empty cell. So the loop stops because of that. Hence, in my vba code which manipulates time-series price data, I need to add some kind of condition (eg. offset) for the loop to continue.

Thanks a lot once more.

Andrew G  
25 Apr 17 at 11:23

The Empty keyword is used for testing uninitialised Variant variables, not the contents of cells. That's why this video doesn't include any mention of using the Empty keyword.

25 Apr 17 at 09:30

Hi Andrew, 

The simple code I am testing is the following:


Sub DoUntilStatemet()
    Do Until ActiveCell = Empty
        Select Case ActiveCell
            Case 0 To 0.5
                ActiveCell.Offset(0, 7).Value = "Positive"
            Case 0.51 To 1
                ActiveCell.Offset(0, 7).Value = "Very Positive"
            Case Else
                ActiveCell.Offset(0, 7).Value = "Negative"
        End Select
    ActiveCell.Offset(1, 0).Select

End Sub


I notice a difference between the keyward "Empty" that I use instead of " " or the function "IsEmpty".

Empty works with non-zero values. The other suggestions work regardless. I didnt knew that detail. 



Andrew G  
25 Apr 17 at 06:49

Hi, it shouldn't be necessary to add another condition - both of the examples shown above will loop to the end of a list which contains 0. Which condition are you testing for in your current code?