Rich想知道如何配置Excel,以便当他输入一个数字时它将自动前进到下一个单元格。他想消除点击Enter或Tab进入下一个单元格的情况。一系列单元格的条目值将始终为单个正数。

这不能使用Excel中的任何本机配置设置来完成。

相反,您将需要创建一个宏来为您处理条目。宏的自然选择是对工作表使用Change事件,这样,每当将值输入到单元格中时,该条目就会被“拉开”并填充到该行的单元格中。

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

首先,此宏检查是否输入了数字。如果是,则从值中提取数字并将其放置在行中的连续单元格中。

当然,这种宏的缺点是您仍然需要按Enter来触发事件。如果您不想完全按下Enter键,那么您将需要使用其他方法。

此技术依靠OnKey函数将宏分配给特定的击键。将以下代码放入标准宏模块中。

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

要启动宏,请运行“分配”宏。此后,每次键入数字时,该数字将填充到当前单元格中,并选择右边的下一个单元格。如果您输入文字,则什么也不会发生。

(当然,如果您尝试输入一个混合值,例如B2B,则当您按“ 2”时,这将在单元格中结束。)完成此类数据输入后,请运行ClearAssigns宏完成。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(6614)适用于Microsoft Excel 97、2000、2002和2003。可以在以下功能区中为Excel的功能区界面(Excel 2007及更高版本)找到本技巧的版本: