Welcome toExcel.Tips.Net
Tips.Net Home
ExcelTips Home
Ask an Excel Question
Make a Comment
ExcelTips FAQ
ExcelTips Premium
Learn Access Now
Free Printable Forms
Beauty Tips
Car Tips
Cleaning Tips
College Tips
Cooking Tips
Excel2007 Tips
ExcelTips
Family Tips
Gardening Tips
Health Tips
Home Tips
Legal Tips
Money Tips
Organizing Tips
Pest Tips
Pet Tips
Wedding Tips
Word2007 Tips
WordTips
Advertise on the
ExcelTips Site
Adding a Little Animation to Your Life
Converting a Range of URLs to Hyperlinks
Making the Formula Bar Persistent
Rich wonders how he can configure Excel so that when he enters a single digit it will automatically advance to the next cell. He wants to eliminate hitting Enter or Tab to get to the next cell. The value of the entry for a range of cells will always be a single positive digit.
This cannot be done with any native configuration setting in Excel. Instead, you will need to create a macro that will handle the entry for you. A natural choice for the macro is to use the Change event for the worksheet, so that any time a value is entered into a cell, the entry is "pulled apart" and stuffed in cells in the row.
Private Sub Worksheet_Change(ByVal Target As Range)
If IsNumeric(Target.Value) Then
CRow = Target.Row
CColumn = Target.Column - 1
Entry = Target.Value
For i = 1 To Len(Entry)
Cells(CRow, CColumn + i).Value = Mid(Entry, i, 1)
Next
End If
End Sub
This macro checks, first, to see if what was entered is numeric. If it is, then the digits are extracted from the value and placed in consecutive cells in the row.
The drawback to such a macro, of course, is that you still need to press Enter to trigger the event. If you want to get away from pressing Enter entirely, then you will need to rely upon a different approach. This technique relies upon the OnKey function to assign macros to specific keystrokes. Place the following code into a standard macro module.
Sub Assigns()
Dim i As Variant
With Application
For i = 0 To 9
.OnKey i, "dig" & i
Next
End With
End Sub
Sub ClearAssigns()
Dim i As Variant
With Application
For i = 0 To 9
.OnKey i
Next
End With
End Sub
Sub dig0()
ActiveCell.Value = 0
ActiveCell.Offset(1, 0).Select
End Sub
Sub dig1()
ActiveCell.Value = 1
ActiveCell.Offset(1, 0).Select
End Sub
Sub dig2()
ActiveCell.Value = 2
ActiveCell.Offset(1, 0).Select
End Sub
Sub dig3()
ActiveCell.Value = 3
ActiveCell.Offset(1, 0).Select
End Sub
Sub dig4()
ActiveCell.Value = 4
ActiveCell.Offset(1, 0).Select
End Sub
Sub dig5()
ActiveCell.Value = 5
ActiveCell.Offset(1, 0).Select
End Sub
Sub dig6()
ActiveCell.Value = 6
ActiveCell.Offset(1, 0).Select
End Sub
Sub dig7()
ActiveCell.Value = 7
ActiveCell.Offset(1, 0).Select
End Sub
Sub dig8()
ActiveCell.Value = 8
ActiveCell.Offset(1, 0).Select
End Sub
Sub dig9()
ActiveCell.Value = 9
ActiveCell.Offset(1, 0).Select
End Sub
To start the macro, run the Assigns macro. Thereafter, every time a digit is typed the digit is stuffed into the current cell and the next cell to the right selected. If you type in text, then nothing happens. (Of course, if you try to enter a mixed value, such as B2B, then when you press "2" that is what will end up in the cell.) When you are done with this type of data entry, run the ClearAssigns macro to finish up.
ExcelTips is your source for cost-effective Microsoft Excel training. This tip (6614) applies to Microsoft Excel versions: 97 2000 2002 2003 2007
Got the Time? Understanding the ins and outs of working with times and dates can be confusing. Remove the confusion--ExcelTips: Times and Dates is an invaluable resource for learning how best to work with times and dates.