Exercise: Generate Random Lottery Numbers

This exercise is provided to allow potential course delegates to choose the correct Wise Owl Microsoft training course, and may not be reproduced in whole or in part in any format without the prior written consent of Wise Owl.

The answer to the exercise will be included and explained if you attend the course listed below!

Category ==> Excel VBA Macros  (49 exercises)
Topic ==> Looping over collections  (10 exercises)
Level ==> Average difficulty
Course ==> Excel VBA macros
Before you can do this exercise, you'll need to download and unzip this file (if you have any problems doing this, click here for help).

You need a minimum screen resolution of about 700 pixels width to see our exercises. This is because they contain diagrams and tables which would not be viewable easily on a mobile phone or small laptop. Please use a larger tablet, notebook or desktop computer, or change your screen resolution settings.

Open the file called Lucky Dip.xlsx and create a subroutine to generate a set of random lottery numbers.

Lotto numbers

You need to create 6 random numbers between 1 and 59 (they don't need to be in order).


Start by looping over the six cells that you need to populate using a For Each loop.

Inside the loop, add a line which generates a random number between 1 and 59 and captures it in a variable.  You can use the RandBetween function to do this:

Num = WorksheetFunction.RandBetween(1, 59)

Add a line to write the number in the variable into the cell that the loop is pointing to, then run the subroutine a few times to test it.


One problem is that you might generate the same number multiple times.


Add a Do Loop structure around the line which calculates a random number.  Add a condition to this loop so that it continues Until it generates a number that isn't already in the worksheet.

You could use the Find method and check that its result Is Nothing to establish that the number isn't already in the worksheet.

Add a line at the start of the subroutine which clears the contents of the cells you're looping over.

If you'd like to see your numbers sorted, you could add the code shown below:

With Sheet1.Sort


.SortFields.Add Key:=Range("B3:G3")

.SetRange Range("B3:G3")

.Orientation = xlLeftToRight


End With

Save and close the workbook.

This page has 0 threads Add post