仅接受一个数字(Microsoft Excel)
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及更高版本)找到本技巧的版本: