Got a version of Excel that uses the menu interface (Excel 97, Excel 2000, Excel 2002, or Excel 2003)? This site is for you! If you use a later version of Excel, visit our ExcelTips site focusing on the ribbon interface.
With more than 50 non-fiction books and numerous magazine articles to his credit, Allen Wyatt is an internationally recognized author. He is president of Sharon Parq Associates, a computer and publishing services company.
Learn more about Allen...
Please Note: This article is written for users of the following Microsoft Excel versions: 97, 2000, 2002, and 2003. If you are using a later version (Excel 2007 or later), this tip may not work for you. For a version of this tip written specifically for later versions of Excel, click here: Controlling Entry Order on Unprotected Cells.
Rob has a number of worksheets that are used to score assessments. The first worksheet has cells for name, date, etc., then several columns to enter the multiple-choice responses. The sheet is protected, so only input cells can be changed. When the user finishes the last cell in a column, the focus will jump to the next unprotected cell, which may be the first cell in the next column, or it might be the "date" cell. Rob wonders how he can control the focus so that when the value is entered into the last (bottom) cell in a column, it will then move to a cell that he specifies.
There is no built-in way to do this in Excel, as the program determines its own order of choosing which cell is next selected. You can modify which cell is selected next when you press Enter in a worksheet, but you cannot modify what happens when you press Tab in a protected worksheet. By default cells are selected left to right and then top to bottom in the worksheet.
If you want to modify what happens when the Tab key is pressed, then you'll need to resort to using a macro to control the selection order. The following macro is an example; it moves to cell D5 when leaving cell C10 and to E5 when leaving cell D10:
Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False If Target.Address = "$C$10" Then Range("D5").Select If Target.Address = "$D$10" Then Range("E5").Select Application.EnableEvents = True End Sub
The problem with using a VBA solution like this is that it can make your spreadsheet—particularly if it is a large one—a bit more sluggish. By their nature, macros also mean that the Undo feature is disabled.
If your tab order needs are more complex, then you may be interested in the code discussed at this web page:
As you can tell, the code can get rather complex at times. Of course, such an approach, since it stipulates all cell-to-cell movement, makes it more difficult to make changes to the design of the worksheet itself.
ExcelTips is your source for cost-effective Microsoft Excel training. This tip (10313) applies to Microsoft Excel 97, 2000, 2002, and 2003. You can find a version of this tip for the ribbon interface of Excel (Excel 2007 and later) here: Controlling Entry Order on Unprotected Cells.
Program Successfully in Excel! John Walkenbach's name is synonymous with excellence in deciphering complex technical topics. With this comprehensive guide, "Mr. Spreadsheet" shows how to maximize your Excel experience using professional spreadsheet application development tips from his own personal bookshelf. Check out Excel 2013 Power Programming with VBA today!