系统:Windows 7
软件:Excel 2010 / Access 2010
- 这个系列开展一个新的篇章,主体使用Access,包括数据库部分及界面部分,当然输出部分也会涉及到Excel,Excel的可读性还是比较好的
- 本公众号的不同阶段:Excel -> Excel + Access -> Access。但并不表示Access就一定比Excel好啊,各有所长吧,合适才是最好的
- 主体框架:换一种讲解方式,以项目为基础,从开始到结束
- 项目名称:培训管理系统
- 主要功能:两个界面。界面1,培训时录入信息;界面2,以培训老师和培训学员为客户,输出信息
- 涉及知识:Access界面,数据库知识,VBA,SQL,Excel
Part 1:本篇目标
- 接下来几篇分别介绍一下几个按钮的实现
- 今天说说增加学员按钮,点击该按钮,则在下面的列表框中增加该学员信息,细致上说有四个部分组成:
- 检查学员姓名及学号是否有填写
- 检查列表框是否有信息,无则增加表头部分
- 检查列表框是否已经有该学员信息(学号是唯一的)
- 若无该学员信息,增加该学员信息
静态效果
动态过程
Part 2:写代码前的准备
- 写代码之前需对该列表框控件做如下设置:
- 设计视图下,属性表 - 格式,列数设置为2,列表题设置为是
- 设计视图下,属性表 - 数据,行来源类型设置为值列表
- 详细见下图
数据设置
格式设置
Part 3:代码
- 分为两个部分,一个在窗体内,一个在模块内
窗体内代码
Private Sub 增加学员_Click()
Dim frmName
Dim ctrlName
frmName = fFrm_pxsr_01_当前窗体名称
ctrlName = "学员列表框"
Call sMod_sr_03_学员信息(frmName, ctrlName)
End Sub
模块内代码
Sub sMod_sr_03_学员信息(frmName, ctrlName)
Rem>>
Rem>>
Dim frm
Dim ctrl
Dim stuName
Dim strAnswer
Dim stuNum
Dim existsRow
Dim tableHeader
Dim i
Dim existsStuNum
Dim newStu
Rem>>第1步:检查信息是否填写完毕
Set frm = Forms(frmName)
Set ctrl = frm.Controls("学员姓名")
stuName = ctrl.Value
If stuName = "" Or IsNull(stuName) Then
strAnswer = MsgBox("请填入学员姓名", vbCritical, "提示")
Exit Sub
End If
Set ctrl = frm.Controls("学号")
stuNum = ctrl.Value
If stuNum = "" Or IsNull(stuNum) Then
strAnswer = MsgBox("请填入学员学号", vbCritical, "提示")
Exit Sub
End If
Rem>> 第2步:检查原列表框是否有信息
Set ctrl = frm.Controls(ctrlName)
existsRow = ctrl.ListCount
If existsRow = 0 Then
tableHeader = "学员姓名;学号"
ctrl.AddItem tableHeader
End If
Rem>> 第3步:检查原列表框是否已该信息
If existsRow > 1 Then
For i = 1 To existsRow - 1 '第1行为标题行
'ListBox.Column(Index, Row),Index表示列信息,Row表示行信息,都是从0开始
existsStuNum = ctrl.Column(1, i) '行i从0开始
If existsStuNum = stuNum Then
strAnswer = MsgBox("拟添加人员信息已在列表框中,请勿重复添加", vbCritical, "提示")
Exit Sub
End If
Next i
End If
Rem>> 第4步:录入信息
newStu = stuName & ";" & stuNum
ctrl.AddItem newStu
End Sub
代码截图
Part 4:部分代码解读
ctrl.AddItem newStu
,列表款增加内容就是一行一行往下增加,不同列使用;
隔开即可existsRow = ctrl.ListCount
获取当前列表框已有信息行数
官方解读
> 本文为原创作品,如需转载,可加小编微信号learningBin
更多精彩,请关注微信公众号
扫描二维码,关注本公众号