成绩管理中,学生成绩录入有一些实际应用,那就是我们一次不可能只录入一个学生。

那么要一次录入同一个学科的所有学生,如何解决。

本例以分页选项卡形式来制作,有一点难度,所以做起来比较费时费力。

不过,功能完成的很良好。

下面具体介绍:

录入界面

很显然,每个分页就是一个科目。每个分页都有学生列表。

选择顶部下拉框,可实现不同年级选择,很方便。

只要对学生成绩分别添加,一键完成保存,数据表就制作完成了。

关键问题是做好许多选择处理,后台代码在不同的表之间来回跳转。

真是走了山路十八弯才得到这么一个简单的页面。

课目设置

其中做了一个课目设置,以前没有做这个方面的功能。

今天加了上去,感觉对每个班组的课目可以自由设置。

虽然感觉没多么大意义,但是不同的学校适用不同的学习科目很具有便捷性。

功能简单不做过多介绍。

代码介绍

重点应用了MultiPage控件,分页显示学科项目。

运用代码创建控件,所以在编辑的时候,表单里是看不到分页画面的。

创新建分页


Set Fr = Me.Controls.Add("Forms.MultiPage.1", "ControlPag")

保存成绩

保存成绩做了个过程,方便调用,其逻辑就是找到对应的学号和学科,然后进行赋值。

理论很简单,唯一比较麻烦的是就是从选项卡中取得相应的学生学号和成绩有一点难度。

其中涉及到如何遍历窗体控件和分页以及分页里面的控件。

要做三次嵌套循环,感觉要疯了的状态。

如果数学没学好,感觉这就是个天大的问题。

不能思考,有损大脑细胞。

保存成绩过程

Private Sub SaveCJ(ID As String, KM As String, Tvalue As Long) ''保存成绩 Dim cj As Worksheet Set cj = ThisWorkbook.Worksheets("成绩管理") cj.Activate Dim R As Range, Rs As Range, Rc As Range, Rx As Range Dim iRow As Integer, iCol As Integer iRow = cj.Range("B65535").End(xlUp).Row iCol = cj.Range("AZ1").End(xlToLeft).Column Set R = cj.Range("B2:B" & iRow) Set Rc = cj.Range(cj.Cells(1, 2), cj.Cells(1, iCol)) For Each Rs In R If Rs.Value = ID Then For Each Rx In Rc If Rx.Value = KM Then cj.Cells(Rs.Row, Rx.Column).Value = Tvalue End If Next Rx End If Next Rs End Sub

总结

无论如何,这个功能完成的很不错,加以修改,会变得更加实用和漂亮。

其中综合性技术应用很多,无论哪个环节不很熟悉,就变得十分困难。

学习vba 不能一步到位,渐进式努力,总会不断提高。

欢迎关注、收藏