微信公众号:yhjbox(永恒君的百宝箱),获取最新文章、资源。

Excel VBA 实例(21) – 如何快速准确录入数据

Excel VBA 实例 永恒君 2523℃ 0评论
上个周,有位学校的老师找到我,咨询关于excel表格数据录入的问题,如下图:(简化了一部分表格)

他们老师需要把好几百个学生的月考成绩信息录入到excel表里,方便后续的整理分析。

问题

通过常规的输入,他们经常会遇到未按要求录入的问题,如:
1、粗心导致语数外分数不在0-100范围,体育成绩不在0-30范围;
2、有部分信息遗漏未录入;
3、输入错行,将原有的数据覆盖;
......

除了这些,每输入一行数据,需要用鼠标点击到下一行,再进行录入,这样也比较浪费时间、很繁琐。

这些问题说起来也不是什么大问题,但是就是很繁琐,对效率很有影响,有没有好的办法改进一下?

操作演示

其实,这个完全也可以用vba来解决,当然为了解决上面这个问题,这次要添加一个窗体,可以理解为一个录入数据的窗口,通过这个自定的窗口把数据输入到表里面去。

为了更清楚直观的看到效果,永恒君录制了一小段视频,大家先看看效果:

很显然,通过这个设计只需要专注输入的内容,全程只需要键盘即可完成操作。

这样很大程度地避免没有信息输入、录入不符合要求的数据(语数外分数一定为0-100,体育成绩一定是0-30)的情况,提升不少效率。

解决思路

关于vba窗体设计本身,没有太多的难点,就是和堆积木一样把元素添加进去就好了,如下图:

稍微难一些的就是事件的代码,比如:

如果没有内容,则要提示"请务必输入姓名、成绩信息!"

If TextBox1.Text = "" Or TextBox2.Text = "" Or TextBox2.Text = "" Or TextBox2.Text = "" Then
    MsgBox "请务必输入姓名、成绩信息!"
    Exit Sub
End If

如果语文成绩超出范围,则提示请输入0-100之间的数字。

If TextBox2.Text < 0 Or TextBox2.Text > 100 Then
    MsgBox "语文成绩请输入0-100之间的数字!"
    TextBox2.Text = ""
    TextBox2.SetFocus
    Exit Sub
End If

窗体内输入完成后回车,成绩直接录入到excel表格中。输入完一个学生的成绩,按回车即可输入下一个。

r = [B65536].End(xlUp).Row + 1
Cells(r, "A") = Cells(r - 1"A") + 1
Cells(r, "B") = TextBox1.Text
Cells(r, "C") = TextBox2.Text
Cells(r, "D") = TextBox3.Text
Cells(r, "E") = TextBox4.Text
Cells(r, "F") = TextBox5.Text
===
Private Sub TextBox5_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 13 Then    
        Call CommandButton1_Click
        TextBox1.SetFocus           
    End If    
End Sub

把上面代码和上面的窗体组合起来即可实现效果。

永恒君已经把源文件准备好,需要的话在微信公号后台回复「录入」即可。

你也可以在公号里「精华整理」-「VBA实例」进行查看更多vba实例,提高工作效率。

如果你觉得文章还不错,请大家点个好看、分享一下。你的肯定是我最大的鼓励和支持。
Excel vba 实例(20) - 一键填充每月员工拜访地区Excel vba 实例(19) -  一键汇总不完全相同的sheet到总表
Excel vba 实例(18) - 一键将单列长数据平均拆成多列

收藏 | 17个Excel vba实例汇总

Excel vba 实例(17) - 遍历多个工作簿并提取内容到总表

Excel vba 实例(16) - 按指定字段分类批量提取内容

微信公众号:永恒君的百宝箱
个人博客:www.yhjbox.com

转载请注明:永恒君的百宝箱 » Excel VBA 实例(21) – 如何快速准确录入数据

喜欢 (1)
发表我的评论
取消评论
表情