EXCEL VBA行政与人力资源管理应用案例详解 第4章.pdf
《EXCEL VBA行政与人力资源管理应用案例详解 第4章.pdf》由会员分享,可在线阅读,更多相关《EXCEL VBA行政与人力资源管理应用案例详解 第4章.pdf(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 C H A P T E R 基本设置模块的设计 4-1 部门设置子模块设计 4-2 其他基础设置子模块的设计 4-3 其他基础设置子模块应用示例 行政与人力资源管理应用案例详解 基本设置模块包括“部门设置”、“职位设置”、“职务设置”、“职称设置”、“文化程度设置”、“职工类别设置”、“工作地点设置”和“合同类别设置”等基本子模块,分别用于对部门、职位、职务、职称、文化程度、职工类别、工作地点和合同类别等项目进行设置。设立基本设置模块的目的,是为了方便输入数据和查询数据,提高工作效率。4-1 部门设置子模块设计 部门设置子模块的功能,就是以数据库“人事管理.mdb”中的“部门设置”数据表为基
2、础,通过“部门设置管理”窗体及有关控件,从而完成部门及其负责人的添加、修改、删除、保存、查询及显示等基本功能,以及当部门名称改变后对其他所有数据表中的部门名称进行统一修改。本节介绍部门设置子模块的设计方法和步骤。4-1-1 部门设置数据表的设计“部门设置”数据表有 2 个字段:部门名称和部门负责人,它们都是文本型数据,字段大小都是 10 个字符。“部门设置”数据表由系统自动创建,具体的程序代码可参阅第 2章的有关内容。4-1-2 部门设置管理窗体的结构设计“部门设置管理”窗体结构如图 4-1 所示。它是由 1 个用户窗体、4 个框架、1 个列表框、5 个标签、5 个文本框、6 个命令按钮组成。
3、用户窗体及各个控件的功能及属性设置说明如表 4-1 所示。图 4-1 “部门设置管理”窗体结构 表 4-1 用户窗体及各个控件的功能及属性设置说明 控 件 名 称 Caption 属性 功 能 用户窗体 部门设置管理 部门设置管理 框架 Frame1 空值 框架 Frame2 部门名称及负责人列表显示 150 基本设置模块的设计 4 框架 Frame3 部门名称及负责人编辑 框架 Frame4 统一修改所有数据表部门名称 续上表 控 件 名 称 Caption 属性 功 能 列表框 ListBox1 显示或选择部门 标签 Label1 部门总数:对文本框进行说明 标签 Label2 部门名称:
4、对文本框进行说明 标签 Label3 部门负责人:对文本框进行说明 标签 Label4 原名称:对文本框进行说明 标签 Label5 新名称:对文本框进行说明 文本框 部门总数 显示部门总数 文本框 部门_名称 显示或输入部门名称 文本框 部门_负责人 显示或输入部门负责人 文本框 部门_原名称 显示或输入部门原名称 文本框 部门_新名称 显示或输入部门新名称 命令按钮 部门_添加 添加 添加部门 命令按钮 部门_修改 修改 修改部门名称 命令按钮 部门_删除 删除 删除部门 命令按钮 部门_统一修改 统一修改 对所有数据表中的部门名称进行修改 命令按钮 部门_查看数据库 查看数据库 打开人事
5、管理数据库部门设置数据表 命令按钮 部门_退出 退出系统 关闭窗体 4-1-3 程序代码设计 1定义模块级变量 首先定义下面两个模块级变量,它们放在窗体对象程序代码窗口的顶部:Dim cnnBase As ADODB.Connection 定义Connection对象变量 Dim rsDepartment As ADODB.Recordset 定义 Recordset 对象变量 2为“部门设置管理”窗体设计 Initialize 事件程序 为“部门设置管理”窗体设置 Initialize 事件,以便在启动“部门设置管理”窗体时,系统自动建立与“人事管理.mdb”数据库的连接,并对数据表“部门设
6、置”进行查询,将部门信息显示在列表框和文本框中。“部门设置管理”窗体的 Initialize 事件的程序代码如下:Private Sub UserForm_Initialize()建立与人事管理数据库的连接 Set cnnBase=New ADODB.Connection With cnnBase .Provider=microsoft.jet.oledb.4.0 .Open ThisWorkbook.Path&人事管理.mdb End With 151 行政与人力资源管理应用案例详解 Call 显示部门设置数据 查询数据表部门设置,并将查询结果设置为列表框项目 End Sub 3为列表框设计
7、 Change 事件程序 为列表框设计 Change 事件程序的目的,是为了方便用户查看记录。当用户单击列表框中的某个部门时,该部门的名称及负责人名字就自动显示在有关的文本框中。列表框的Change 事件程序代码如下:Private Sub ListBox1_Change()On Error Resume Next 部门_名称.Value=ListBox1.Value 部门_原名称.Value=ListBox1.Value 部门_负责人.Value=ListBox1.List(ListBox1.ListIndex,1)End Sub 4为部门名称、部门负责人和部门新名称 3 个文本框设计 Ch
8、ange 事件程序 由于数据库对部门名称、部门负责人和部门新名称的字段长度限制为 10 个字符,为了防止输入的字符长度超过允许的长度,可以为这 3 个文本框设计 Change 事件程序,以控制用户输入的字符长度。考虑到此人力资源管理系统有很多窗体的文本框都要设置 Change 事件,因此可以把判断控制文本框字符长度的程序代码写成一个子程序。文本框字符判断控制子程序的名为“TextBoxDataLength”,它是一个带参数的子程序,其程序代码如下所示,它保存在一个名为“公共子程序和自定义函数”的标准模块中:Public Sub TextBoxDataLength(myCnn As ADODB.
9、Connection,myTable As String,myFieldName As String,myTextBox As MSForms.TextBox)myCnn 为数据库连接对象变量,myRs 为数据库查询数据集变量 myTable 为查询的数据表,myFieldName 为字段名称,myTextBox 为文本框名称 Dim myDefineSize As Integer,mysql As String Dim myRs As ADODB.Recordset 对数据表 myTable 进行查询,以便获得某字段的长度 mysql=select*from&myTable Set myRs
10、=New ADODB.Recordset myRs.Open mysql,myCnn,adOpenKeyset,adLockOptimistic myDefineSize=myRs.Fields(myFieldName).DefinedSize 获得某字段的长度 If Len(myTextBox.Value)myDefineSize Then MsgBox 字段“&myRs.Fields(myFieldName).Name _&”的长度已经超过了&myDefineSize&个字符!,_ vbCritical+vbOKOnly,警告 myTextBox.Value=Left(myTextBox.
11、Value,myDefineSize)myTextBox.SetFocus End If Set myRs=Nothing End Sub 这样,部门名称、部门负责人和部门新名称这 3 个文本框的 Change 事件程序程序代码分别如下所示:Private Sub 部门_名称_Change()Call TextBoxDataLength(cnnBase,部门设置,部门名称,部门_名称)End Sub Private Sub 部门_负责人_Change()Call TextBoxDataLength(cnnBase,部门设置,部门负责人,部门_负责人)152 基本设置模块的设计 4 End Su
12、b Private Sub 部门_新名称_Change()Call TextBoxDataLength(cnnBase,部门设置,部门名称,部门_新名称)部门_名称.Value=部门_新名称.Value End Sub 5为【添加】按钮设计 Click 事件程序 在文本框中输入部门名称和部门负责人名字后,单击【添加】按钮,就将输入的部门名称和部门负责人名字数据添加到数据表“部门设置”中。【添加】按钮的 Click 事件程序代码如下:Private Sub 部门_添加_Click()On Error GoTo hhh If TextBoxDataIsBlank(部门_名称,部门名称)=True
13、Then Exit Sub If TextBoxDataIsBlank(部门_负责人,部门负责人)=True Then Exit Sub 将当前记录位置移动到记录集中的第一个记录 If rsDepartment.BOF=False Then rsDepartment.MoveFirst 判断记录集中是否已经存在了某个部门 For i=1 To rsDepartment.RecordCount If rsDepartment.Fields(0)=部门_名称.Value Then 弹出信息框,以提醒用户 MsgBox 在数据库中已经存在一个名称为 的部门!&vbCrLf&vbCrLf _&请重新输
14、入部门名称!,vbExclamation,注意 部门_名称.Value=:部门_名称.SetFocus:Exit Sub End If rsDepartment.MoveNext 当前记录位置向前移动一个记录 Next i rsDepartment.AddNew 使用记录集的 AddNew 方法添加记录 rsDepartment.Fields(部门名称)=部门_名称.Value rsDepartment.Fields(部门负责人)=部门_负责人.Value rsDepartment.Update 使用记录集的 Update 方法刷新记录集 rsDepartment.MoveFirst 将当前记
15、录位置移动到记录集中的第一个记录 Call 显示部门设置数据 调用子程序显示部门设置数据,刷新窗口显示 将文本框数据清除,准备添加新的记录 部门_名称.Value=:部门_负责人.Value=:部门_名称.SetFocus:Exit Sub hhh:MsgBox 保存数据出现错误!&vbCrLf&vbCrLf&错误为:&Err.Description End Sub 在 程 序 中,调 用 了 一 个 判 断 文 本 框 是 否 输 入 了 数 据 的 自 定 义 函 数“TextBoxDataIsBlank”,其返回值为 True 或 False,如果文本框中没有输入数据,其返回True,否
16、则返回 False。这个自定义函数保存在一个名为“公共子程序和自定义函数”的标准模块中,其程序代码如下:Public Function TextBoxDataIsBlank(myTextBox As MSForms.TextBox,myText As String)As Boolean TextBoxDataIsBlank=False If myTextBox.Value=Then TextBoxDataIsBlank=True MsgBox myText&不能为空!请输入数据!,vbCritical,警告 myTextBox.SetFocus End If End Function 153
17、行政与人力资源管理应用案例详解 6为【修改】按钮设计 Click 事件程序 如果输入了错误的部门名称或负责人名字,或者企业的部门名称更改了,或者某个部门的负责人更换了,则可以单击列表框中的某个需要更改部门名称或负责人的项目,然后在部门名称或部门负责人文本框中输入正确的或新的部门名称或负责人,再单击【修改】按钮,对数据库数据进行修改更新。【修改】按钮的 Click 事件程序代码如下:Private Sub 部门_修改_Click()On Error Resume Next 将当前记录位置移动到记录集中的第一个记录 If rsDepartment.BOF=False Then rsDepartme
18、nt.MoveFirst 判断记录集中是否已经存在了某个部门 For i=1 To rsDepartment.RecordCount If rsDepartment.Fields(部门名称)=部门_名称.Value Then 弹出信息框,以提醒用户 MsgBox 在数据库中已经存在一个名称为 的部门!&vbCrLf&vbCrLf _&只能修改部门负责人!,vbExclamation,注意 若部门名称与原来相同,就仍采用原来的部门名称 部门_名称.Value=rsDepartment.Fields(部门名称)End If rsDepartment.MoveNext 当前记录位置向前移动一个记录
19、Next i 确定需要修改记录的绝对位置 rsDepartment.AbsolutePosition=ListBox1.ListIndex+1 将新的部门名称和部门负责人保存到数据表中 rsDepartment.Fields(部门名称)=部门_名称.Value rsDepartment.Fields(部门负责人)=部门_负责人.Value rsDepartment.Update 使用记录集的 Update 方法刷新记录集 Call 显示部门设置数据 调用子程序显示部门设置数据,刷新窗口显示 部门_名称.Value=:部门_负责人.Value=:部门_名称.SetFocus:Exit Sub E
20、nd Sub 7为【删除】按钮设计 Click 事件程序 如果企业撤销了某个部门,就可以在列表框中选择该部门项目,然后单击【删除】按钮,将该部门的数据从数据表中删除。【删除】按钮的 Click 事件程序代码如下:Private Sub 部门_删除_Click()On Error Resume Next If ListBox1.ListIndex=-1 Then 如果没有在列表框中选择项目,就弹出信息框 MsgBox 没有选择要删除的项目!,vbCritical,注意 Exit Sub End If If rsDepartment.BOF=False Then rsDepartment.Move
21、First 将当前记录位置移动到记录集中的第一个记录 rsDepartment.AbsolutePosition=ListBox1.ListIndex+1 确定要删除记录的绝对位置 rsDepartment.Delete 使用记录集的 Delete 方法删除记录 rsDepartment.Update 使用记录集的 Update 方法刷新记录集 End If 将文本框数据清除 部门_名称.Value=:部门_负责人.Value=:部门_原名称.Value=154 基本设置模块的设计 4 Call 显示部门设置数据 调用子程序显示部门设置数据,刷新窗口显示 如果数据表中没有记录,就将光标移到部门
22、名称文本框中 If rsDepartment.RecordCount=0 Then 部门_名称.SetFocus End Sub 8为【查看数据库】按钮设计 Click 事件程序 如果用户想要查看部门设置数据表,并在数据表中直接对记录进行添加、修改和删除等操作,可以单击【查看数据库】按钮。【查看数据库】按钮的 Click 事件程序代码如下:Private Sub 部门_查看数据库_Click()On Error Resume Next Dim mydata As String Dim myaccess As Access.Application 定义Access应用程序对象变量 mydata=
23、ThisWorkbook.Path&人事管理.mdb Set myaccess=GetObject(mydata)使用 DoCmd 对象的 OpenTable 方法打开数据表部门设置 myaccess.DoCmd.OpenTable 部门设置 myaccess.Visible=True 使打开的 Access 数据表窗口可见 myaccess.DoCmd.Maximize 使打开的 Access 数据表窗口最大化 Set myaccess=Nothing 释放变量 myaccess End Sub 9为【退出】按钮设计 Click 事件程序 单击【退出】按钮,将结束操作,关闭部门设置窗口,返回
24、到 Excel 工作表。【退出】按钮的 Click 事件程序代码如下:Private Sub 部门_退出_Click()End End Sub 10为【统一修改】按钮设计 Click 事件程序 如果企业的某个部门名称改变了,则可以单击【统一修改】按钮,一次性地将“人事管理.mdb”数据库中的所有数据表中的部门名称进行修改,这样可以大大提高效率。【统一修改】按钮的 Click 事件程序代码如下:Private Sub 部门_统一修改_Click()On Error GoTo hhh Dim mysql As String Dim rs As ADODB.Recordset If TextBoxD
25、ataIsBlank(部门_新名称,部门新名称)=True Then Exit Sub-统一修改“人事管理.mdb”数据库中所有数据表的所有部门名称-修改部门设置数据表中的部门数据 Call 统一修改部门名称子程序(cnnBase,部门设置,部门名称)修改招聘申请信息数据表中的部门数据 Call 统一修改部门名称子程序(cnnBase,招聘申请信息,申请部门)修改应聘人员初试信息数据表中的部门数据 Call 统一修改部门名称子程序(cnnBase,应聘人员初试信息,应聘部门)修改应聘人员面试信息数据表中的部门数据 Call 统一修改部门名称子程序(cnnBase,应聘人员面试信息,应聘部门)修
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EXCEL VBA行政与人力资源管理应用案例详解 第4章 VBA 行政 人力 资源管理 应用 案例 详解
限制150内