EXCEL VBA行政与人力资源管理应用案例详解 第11章.pdf
《EXCEL VBA行政与人力资源管理应用案例详解 第11章.pdf》由会员分享,可在线阅读,更多相关《EXCEL VBA行政与人力资源管理应用案例详解 第11章.pdf(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 C H A P T E R 统计分析模块的设计 11-1 在职职工统计分析子模块设计 11-2 应聘人员统计分析子模块设计 11-3 离退职工统计分析子模块设计 11-4 为统计分析自定义菜单命令和自定义命令按钮指定宏 行政与人力资源管理应用案例详解 对企业的人力资源数据进行统计分析,及时了解和掌握企业的人力资源现状,是企业人力资源部门的一项重要工作。本章将主要介绍在职职工统计分析子模块、应聘人员统计分析子模块和离退职工统计分析子模块的设计方法。11-1 在职职工统计分析子模块设计 在职职工统计分析子模块是通过一个“职工统计分析”窗体实现的。在此窗体上,用户可根据选择的统计方法和项目,以图表
2、和数据的形式对在职职工的构成进行分析。例如,统计分析企业各部门的职工人数、男女人数、年龄分布、职称分布、学历分布等。下面介绍这个窗体的结构设计和程序设计。11-1-1 在职职工统计分析窗体结构设计“职工统计分析”窗体的结构如图 11-1 所示,它由 1 个用户窗体、7 个框架、4 个选项按钮、1 个标签、1 个 Spreadsheet 控件、2 个命令按钮、1 个 TreeView 控件、1 个 ChartSpace控件组成。用户窗体及各个控件的功能及属性设置如下。图 11-1 “职工统计分析”窗体结构(1)用户窗体:名称属性和 Caption 属性均设置为“职工统计分析”。(2)7 个框架:
3、它们用于将不同功能的控件组合在一起,其 Caption 属性分别设置为“选择分析项目”、“统计数据类型”、“统计图表类型”、“选择统计分析项目”、“职工统计分析结果”、“职工构成图”和“数据统计”。其中,标题为“数据统计”的框架的名称属性也设置为“数据统计”。(3)在标题为“统计数据类型”框架内有 2 个选项按钮,用于选择统计数据类型(即统计数据是百分比还是绝对数),其名称属性和 Caption 属性均分别设置为“百分比”和“绝对数”,其中第一个选项按钮的 Value 属性设置为 True。360 统计分析模块的设计 11(4)在标题为“统计图表类型”框架内有 2 个选项按钮,用于选择统计图表
4、类型(即统计图表是柱形图还是饼图),其名称属性和 Caption 属性均分别设置为“柱形图”和“饼图”,其中第一个选项按钮的 Value 属性设置为 True。(5)在标题为“选择统计分析项目”框架内有 1 个 TreeView 控件,用于选择要进行统计分析的具体项目(如部门、职称、学历、性别、年龄等),其名称为“TreeView1”。(6)在标题为“职工构成图”框架内有 1 个 ChartSpace 控件,用于绘制统计分析图,其名称为“ChartSpace1”。(7)在标题为“数据统计”框架内有 1 个 Spreadsheet 控件,用于显示职工的统计数据,其名称为“Spreadsheet1
5、”。(8)在标题为“职工统计分析结果”框架底部有 1 个标签,用于显示职工的总体统计结果数据,其名称属性和 Caption 属性均设置为“职工总体情况”,SpecialEffect 属性设置为“fmSpecialEffectSunken”;BackColor 属性设置为“&H00FFC0C0&”。在程序中,这个标签的 Caption 属性将被重新设置。(9)在用户窗体上有 2 个命令按钮,分别用于重新设置统计分析项目和关闭窗体,其名称属性和 Caption 属性均分别设置为“重选”和“退出”。(1)要使用 TreeView 控件,必须先将该控件添加到控件工具箱。TreeView 控件的名称为“
6、Microsoft TreeView Control 6.0(SP4)”。(2)要使用 ChartSpace 控件,必须先将该控件添加到控件工具箱。ChartSpace控件的名称为“Microsoft Office Chart 11.0”(对 Excel2003)或“Microsoft Office Chart 10.0”(对 Excel2002)或“Microsoft Office Chart 9.0”(对 Excel 2000)。说 明 11-1-2 在职职工统计分析窗体程序代码设计 通过“职工统计分析”窗体,用户可以任意选择部门、性别、职称、学历和年龄等,对在职职工的构成进行分析,并将统
7、计计算结果用数字和图表在窗体上显示出来。“职工统计分析”窗体的程序代码设计如下。1定义模块级变量 首先定义下面的模块级变量,它们放在窗体对象程序代码窗口的顶部:Dim cnn As ADODB.Connection Dim rs As ADODB.Recordset Dim myDepartment 保存部门名称变量 Dim myAcademic 保存学历类别变量 Dim myProfessional 保存职称类别变量 Dim mySex(2)As Variant 保存男女性别变量 Dim myAge(6)As Variant 保存年龄分组变量 Dim finalcolumn As Integ
8、er Dim myTitle As String 图表的标题文字变量 2为用户窗体设计 Initialize 事件程序 为用户窗体设置 Initialize 事件,以便在启动“职工统计分析”窗体时,系统自动建立与数据库的连接,查询有关的基础设置数据表,为 TreeView1 控件设置节点,同时对职工 361 行政与人力资源管理应用案例详解的总体情况进行统计分析。“职工统计分析”窗体的 Initialize 事件程序代码如下:Private Sub UserForm_Initialize()On Error Resume Next Dim mysql As String,i As Integer
9、 Dim Total As Long,Male As Long,Female As Long,AverageAge As Single Dim myArray As Variant 建立与数据库人事管理.mdb的连接 Set cnn=New ADODB.Connection With cnn .Provider=microsoft.jet.oledb.4.0 .Open ThisWorkbook.Path&人事管理.mdb End With 设置Treeview控件的某些属性 TreeView1.Nodes.Clear TreeView1.LineStyle=tvwRootLines Tree
10、View1.Style=tvwTreelinesPlusMinusText TreeView1.LabelEdit=tvwManual-设置部门一级节点及其下属的二级节点和三级节点-myArray=Array(性别,年龄,学历,职称)查询部门名称 Set rs=New ADODB.Recordset mysql=select 部门名称 from 部门设置 rs.Open mysql,cnn,adOpenKeyset,adLockOptimistic rs.MoveFirst ReDim myDepartment(rs.RecordCount)Set nodx=TreeView1.Nodes.A
11、dd(,部门,部门)设置部门一级节点 For i=1 To rs.RecordCount myDepartment(i)=rs!部门名称 设置部门二级节点(具体部门)Set nodx=TreeView1.Nodes.Add(部门,tvwChild,部门&i,myDepartment(i)For j=0 To 3 设置部门三级节点(各部门下的具体分析项目)Set nodx=TreeView1.Nodes.Add(部门&i,tvwChild,部门&i&j_+1,myArray(j)Next j rs.MoveNext Next i -设置学历一级节点及其下属的二级节点和三级节点-myArray=A
12、rray(部门,性别,年龄)查询学历类别(文化程度)Set rs=New ADODB.Recordset mysql=select 文化程度 from 文化程度设置 rs.Open mysql,cnn,adOpenKeyset,adLockOptimistic ReDim myAcademic(rs.RecordCount)rs.MoveFirst Set nodx=TreeView1.Nodes.Add(,学历,学历)设置学历一级节点 For i=1 To rs.RecordCount myAcademic(i)=rs!文化程度 设置学历二级节点(具体的学历类别)Set nodx=TreeV
13、iew1.Nodes.Add(学 历,tvwChild,学 历&_ i,myAcademic(i)362 统计分析模块的设计 11 For j=0 To 2 设置学历三级节点(各学历类别下的具体分析项目)Set nodx=TreeView1.Nodes.Add(学历&i,tvwChild,学历&i&j_+1,myArray(j)Next j rs.MoveNext Next i -设置职称一级节点及其下属的二级节点和三级节点-myArray=Array(部门,性别,年龄)查询职称类别 Set rs=New ADODB.Recordset mysql=select 职称类别 from 职称类别设
14、置 rs.Open mysql,cnn,adOpenKeyset,adLockOptimistic ReDim myProfessional(rs.RecordCount)rs.MoveFirst Set nodx=TreeView1.Nodes.Add(,职称,职称)设置职称一级节点 For i=1 To rs.RecordCount myProfessional(i)=rs!职称类别 设置职称二级节点(具体的职称类别)Set nodx=TreeView1.Nodes.Add(职 称,tvwChild,职 称&_ i,myProfessional(i)For j=0 To 2 设置职称三级节
15、点(各职称类别下的具体分析项目)Set nodx=TreeView1.Nodes.Add(职 称&i,tvwChild,职 称&i&j+_ 1,myArray(j)Next j rs.MoveNext Next i -设置性别一级节点及其下属的二级节点和三级节点-myArray=Array(部门,年龄,学历,职称)mySex(1)=男 mySex(2)=女 myArray=Array(部门,年龄,学历,职称)mySex(1)=男 mySex(2)=女 Set nodx=TreeView1.Nodes.Add(,性别,性别)设置性别一级节点 For i=1 To 2 设置性别二级节点(具体的性别
16、,即男和女)Set nodx=TreeView1.Nodes.Add(性别,tvwChild,性别&i,mySex(i)For j=0 To 3 设置性别三级节点(即男女类别下的具体分析项目)Set nodx=TreeView1.Nodes.Add(性别&i,tvwChild,性别&i&j_+1,myArray(j)Next j Next i -设置年龄一级节点及其下属的二级节点和三级节点-myArray=Array(部门,性别)设置年龄分组 myAge(1)=60 Set nodx=TreeView1.Nodes.Add(,年龄,年龄)设置性别一级节点 设置各个年龄分组二级节点及其下属的三级
17、节点 Set nodx=TreeView1.Nodes.Add(年龄,tvwChild,年龄1,20岁以下)For j=0 To 1 Set nodx=TreeView1.Nodes.Add(年龄1,tvwChild,年龄1&j+_ 1,myArray(j)Next j Set nodx=TreeView1.Nodes.Add(年龄,tvwChild,年龄2,21-30岁)For j=0 To 1 Set nodx=TreeView1.Nodes.Add(年龄2,tvwChild,年龄2&j+_ 1,myArray(j)Next j Set nodx=TreeView1.Nodes.Add(年
18、龄,tvwChild,年龄 3,31-40 岁)For j=0 To 1 Set nodx=TreeView1.Nodes.Add(年龄 3,tvwChild,年龄 3&j+_ 1,myArray(j)Next j Set nodx=TreeView1.Nodes.Add(年龄,tvwChild,年龄 4,41-50 岁)For j=0 To 1 Set nodx=TreeView1.Nodes.Add(年龄 4,tvwChild,年龄 4&j+_ 1,myArray(j)Next j Set nodx=TreeView1.Nodes.Add(年龄,tvwChild,年龄 5,51-60 岁)
19、For j=0 To 1 Set nodx=TreeView1.Nodes.Add(年龄 5,tvwChild,年龄 5&j+_ 1,myArray(j)Next j Set nodx=TreeView1.Nodes.Add(年龄,tvwChild,年龄 6,60 岁以上)For j=0 To 1 Set nodx=TreeView1.Nodes.Add(年龄 6,tvwChild,年龄 6&j+_ 1,myArray(j)Next j rs.Close Set rs=Nothing -统计职工总体情况-统计总人数 Set rs=New ADODB.Recordset mysql=select
20、*from 职工基本信息 rs.Open mysql,cnn,adOpenKeyset,adLockOptimistic Total=rs.RecordCount 统计男职工总数 Set rs=New ADODB.Recordset mysql=select*from 职工基本信息 where 性别=男 rs.Open mysql,cnn,adOpenKeyset,adLockOptimistic Male=rs.RecordCount 统计女职工总数 Set rs=New ADODB.Recordset mysql=select*from 职工基本信息 where 性别=女 364 统计分析
21、模块的设计 11 rs.Open mysql,cnn,adOpenKeyset,adLockOptimistic Female=rs.RecordCount 统计平均年龄 Set rs=New ADODB.Recordset mysql=select AVG(年龄)as aa from 职工基本信息 rs.Open mysql,cnn,adOpenKeyset,adLockOptimistic AverageAge=Round(rs!aa,2)将统计结果显示在窗口标体签中 职工总体情况.Caption=职工总人数:&Total&男职工:&Male _&女职工:&Female&职工平均年龄:&A
22、verageAge End Sub 3为 TreeView1 控件设计 NodeClick 事件程序 为 TreeView1 控件设置 NodeClick 事件,以便当单击 TreeView1 控件中的某个节点时,对该节点所对应的项目进行统计分析。TreeView1 控件的 NodeClick 事件程序代码如下:Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)On Error Resume Next Dim mysql As String,sumt As Integer,i As Integer 清除工作表数据 Sp
23、readsheet1.ActiveSheet.Cells.ClearContents Spreadsheet1.ActiveSheet.Range(A1).Value=项目 Spreadsheet1.ActiveSheet.Range(A2).Value=人数 Spreadsheet1.ActiveSheet.Range(A3).Value=百分比 清除图表 Call 清除图表 -开始查询数据-If Node.Key=Node.Text Then 只选择 1 级节点 If Node.Text=部门 Then 分析企业各部门的职工分布 Call 一级节点项目查询(myDepartment,所属部
24、门)数据统计.Caption=部门人数分布统计 myTitle=部门人数分布统计图 ElseIf Node.Text=学历 Then 分析企业职工的学历分布 Call 一级节点项目查询(myAcademic,学历)数据统计.Caption=学历人数分布统计 myTitle=学历人数分布统计图 ElseIf Node.Text=职称 Then 分析企业职工的职称分布 Call 一级节点项目查询(myProfessional,职称)数据统计.Caption=职称人数分布统计 myTitle=职称人数分布统计图 ElseIf Node.Text=性别 Then 分析企业的男女职工分布 Call 一级
25、节点项目查询(mySex,性别)数据统计.Caption=性别人数分布统计 myTitle=性别人数分布统计图 ElseIf Node.Text=年龄 Then 分析企业职工的年龄分布 Call 年龄项目 Call 一级节点项目查询(myAge,年龄)数据统计.Caption=年龄人数分布统计 myTitle=年龄人数分布统计图 End If ElseIf Left(Node.Key,2)Left(Node.Text,2)Then 只选择 3 级节点 If Left(Node.Key,2)=部门 Then 按部门进行详细统计分析 365 行政与人力资源管理应用案例详解 If Node.Text
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EXCEL VBA行政与人力资源管理应用案例详解 第11章 VBA 行政 人力 资源管理 应用 案例 详解 11
限制150内