Excel单元格特定区域,只输入一个字符,就自动跳到下一个单元格,再输入下一个一个字符;这样做方便快捷,只是需要另存为*.xlsm启用宏的工作簿文件;
具体做法如下:
Office--Excel 调用VBA功能,选择文件---选项---自定义功能区,勾选开发工具,点击确定;回到Excel页面,选择开发工具---插入,在ActiveX控件中选择添加一个文本框,TextBox1 无需改名;再添加一个复选框CheckBox1,无需改名,添加复选框为的是,如果勾选,则只输入一个字符有效,不勾选则无效!添加控件后,鼠标右键选择属性,将文本框、复选框的属性做如下修改:
TextBox1.BackColor = &H00C0FFFF& '''' 浅黄色;
TextBox1.BorderStyle = 1-fmBorderStyleSingle ‘’‘ 取消 3-D模式;
CheckBox1.Caption = “金额数字区域,只输入一个字符。”;
Excel操作要求:
勾选“金额数字区域,只输入一个字符。”;再按二次【回车键】,开始输入数字字符,每个单元格只输入一个数字字符,即自动跳到下一个单元格;一组数字输入结束后,数字前自动添加人民币元的符号“¥”。不按回车会出错!
打开VBA编辑器,左侧区域选择 "Sheet1(Sheet1)",双击打开编辑输入 VBA 代码如下:
Dim Ti As Long
Dim xR As Long, xC As Long
Dim Fen As String
Dim tR As Long, tC As Long
'''''' ********************* ''''''
Private Sub CheckBox1_Click()
If CheckBox1.Value = 1 Then
TextBox1.Visible = True
ElseIf CheckBox1.Value = 0 Then
TextBox1.Visible = False
End If
End Sub
'''' 本方案特别适用于会计做账用;
Private Sub TextBox1_Change()
If Len(Me.TextBox1.Text) <> 1 Then Exit Sub '''' 输入一个字符就转到下一个单元格
Me.TextBox1.Activate
ActiveCell = Me.TextBox1.Text
’‘’‘ 添加人民币符号!
Fen = Sheets("Sheet1").Cells(3, xC).Text
Sheets("Sheet1").Range("AO1").Value = Fen
If Fen = "分" Then Sheets("Sheet1").Cells(tR, tC).Value = "¥"
Me.TextBox1.Text = ""
Me.TextBox1.Activate
ActiveCell.Activate
Application.SendKeys "~"
End Sub
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
'''' 多个字符输入完毕,按下回车键,自动完成一个字符占一个单元格;
If KeyCode = 13 Then '''' 按回车记录输入这组数字的开始位置。
Ti = 0
Sheets("Sheet1").Range("AM1").Value = xR
Sheets("Sheet1").Range("AN1").Value = xC
tR = xR
tC = xC
End If
If KeyCode = vbKeyReturn Then
Ti = Val(Ti) 1
Sheets("Sheet1").Cells(xR, xC Ti - 1).Select
Me.TextBox1.Text = ""
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
xC = Target.Column
xR = Target.Row
If CheckBox1.Value = True Then
'''' 定义只输入一个字符的区域。
If Target.Row >= 4 And Target.Column >= 5 And Target.Column < 27 Or Target.Column > 27 And Target.Column < 40 Then '''' 输入一个字符就转到下一个单元格的范围。
With TextBox1
.Left = ActiveCell.Left
.Top = ActiveCell.Top
.Width = ActiveCell.Width
.Height = ActiveCell.Height
End With
'''' 文本框获得焦点,即时输入即可。
Me.TextBox1.Activate
Me.TextBox1.SelStart = 0
Me.TextBox1.SelLength = 1
End If
End If
End Sub