bottom
Great ExcelTips!
         
Your e-mail address is safe!
Close Note

Tips.Net > ExcelTips Home > Macros > Generating Unique Numbers for Worksheets

Generating Unique Numbers for Worksheets

Summary: You may need to automatically generate unique numbers when you create new worksheets in a workbook. Here’s a couple of easy ways to do it. (This tip works with Microsoft Excel 97, Excel 2000, Excel 2002, Excel 2003, and Excel 2007.)

Sometimes you may need Excel to generate a unique number for your worksheets. For instance, you could be using Excel to create forms such as invoices, statements, or tracking sheets, and you need an unique numbers for each form (I'll call this a ticket number). This, of course, implies that Excel needs to remember the number from one session to the next.

There are a couple of ways you can approach this problem. If the numbers don't need to be sequential, you could create a ticket number based on the current time of day, in seconds. The following macro can be added to the ThisWorksheet object:

Private Sub Workbook_NewSheet(ByVal Sh As Object)
    Dim lTicket As Long
    lTicket = CLng(Time * 24 * 60 * 60)
    Sh.Range("A1") = lTicket
End Sub

The macro is triggered every time a new worksheet is added to the workbook. It takes the current time, converts it to an integer number of seconds, and then places that value into cell A1. The likelihood of duplicating ticket numbers within any given day is remote, but it could happen over time. (For instance, if you create a ticket at the exact same time today that you did yesterday or last week.)

To get around this problem, you could create a ticket number in the following manner:

Private Sub Workbook_NewSheet(ByVal Sh As Object)
    Dim sTemp As String
    sTemp = Format(Date, "yymmdd") & Format(Time, "hhmmss")
    Sh.Range("A1") = sTemp
End Sub

This version of the event handler constructs a ticket number based both the date and time. Unless you are creating trouble tickets very quickly, this approach should reduce the possibility of duplicate numbers generated by the macro.

If the numbers must be sequential within the current workbook, then you can define a name that contains the current high value of your ticket number, and then a macro that places that number in a cell on a new worksheet and increments the value of the stored number. Follow these steps to start:

  1. Choose Name from the Insert menu, then choose Define. Excel displays the Define Name dialog box. (Click here to see a related figure.) (To display the equivalent dialog box in Excel 2007, display the Formulas tab of the ribbon and then click on Define Name in the Defined Names group. Excel displays the New Name dialog box.)
  2. In the Name box, enter a name such as MaxNum.
  3. In the Refers To area at the bottom of the dialog box, enter an equal sign followed by the value you want used for the next ticket number.
  4. Click on OK. The new name is stored in the workbook.

Now, add the following macro to the ThisWorksheet object in the VBA Editor:

Private Sub Workbook_NewSheet(ByVal Sh As Object)
    Dim iMax As Integer
    iMax = Mid(ThisWorkbook.Names("MaxNum"), 2)
    Sh.Range("A1") = iMax
    iMax = iMax + 1
    ThisWorkbook.Names("MaxNum").RefersTo = "=" & iMax
End Sub

This macro is executed every time you insert a new worksheet in the workbook. It retrieves the value you stored in the MaxNum, places that value into cell A1 of the new worksheet, and then increments what is stored in MaxNum.

Tip #3336 applies to Microsoft Excel versions: 97 | 2000 | 2002 | 2003 | 2007


Tame Your Data! ExcelTips: Filters and Filtering provides all the details necessary to let you manage large sets of data with confidence and ease. Its information-packed pages demonstrate how to use the two types of filters provided by Excel: AutoFilters and advanced filters.
 
Check out ExcelTips: Filters and Filtering today!

Helpful Links

Ask an Excel Question
Make a Comment

Tips.Net Home
Vital News Home

ExcelTips FAQ
ExcelTips Premium

Learn Access Now

Beauty Tips
Bugs and Pests Tips
Car Tips
Cleaning Tips
College Tips
Cooking Tips
Excel2007 Tips
ExcelTips
Family Tips
Gardening Tips
Health Tips
Home Tips
Money Tips
Organizing Tips
Pet Tips
Word2007 Tips
WordTips

Advertise on the
ExcelTips Site

 

Great Info!

Get tips like this every week in ExcelTips, a free productivity newsletter. Enter your e-mail address and click "Subscribe."
     
(Your e-mail address will never be shared with anyone, ever.)