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.

There are no files which go with this video.

Making a  video bigger

You can increase the size of your video to make it fill the screen like this:

View full screen

Play your video (the icons shown won't appear until you do), then click on the full screen icon which appears as shown at its bottom right-hand corner.

 

When you've finished viewing a video in full screen mode, just press the Esc key to return to normal view.

Improving the quality of a video

To improve the quality of a video, first click on the Settings icon:

Settings icon

Make sure you're playing your video so that the icons shown appear, then click on this gear icon at the bottom right-hand corner.

 

Choose to change the video quality:

Video quality

Click on Quality as shown to bring up the submenu.

 

The higher the number you choose, the better will be your video quality (but the slower the connection speed):

Connection speed

Don't choose the HD option unless you have a fast enough connection speed to support it!

 

Is your Wise Owl speaking too slowly (or too quickly)?  You can also use the Settings menu above to change your playback speed.

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

Hi,

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.

Costas

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:

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

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

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

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.

Costas  
25 Apr 17 at 09:30

Hi Andrew, 

The simple code I am testing is the following:

 

Sub DoUntilStatemet()
    
    Range("b1").Select
    
    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
    Loop

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. 

Thanks

 

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?