您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > EXCEL VBA行政与人力资源管理应用案例详解 第11章
CHAPTER统计分析模块的设计11-1在职职工统计分析子模块设计11-2应聘人员统计分析子模块设计11-3离退职工统计分析子模块设计11-4为统计分析自定义菜单命令和自定义命令按钮指定宏行政与人力资源管理应用案例详解对企业的人力资源数据进行统计分析,及时了解和掌握企业的人力资源现状,是企业人力资源部门的一项重要工作。本章将主要介绍在职职工统计分析子模块、应聘人员统计分析子模块和离退职工统计分析子模块的设计方法。11-1在职职工统计分析子模块设计在职职工统计分析子模块是通过一个“职工统计分析”窗体实现的。在此窗体上,用户可根据选择的统计方法和项目,以图表和数据的形式对在职职工的构成进行分析。例如,统计分析企业各部门的职工人数、男女人数、年龄分布、职称分布、学历分布等。下面介绍这个窗体的结构设计和程序设计。11-1-1在职职工统计分析窗体结构设计“职工统计分析”窗体的结构如图11-1所示,它由1个用户窗体、7个框架、4个选项按钮、1个标签、1个Spreadsheet控件、2个命令按钮、1个TreeView控件、1个ChartSpace控件组成。用户窗体及各个控件的功能及属性设置如下。图11-1“职工统计分析”窗体结构(1)用户窗体:名称属性和Caption属性均设置为“职工统计分析”。(2)7个框架:它们用于将不同功能的控件组合在一起,其Caption属性分别设置为“选择分析项目”、“统计数据类型”、“统计图表类型”、“选择统计分析项目”、“职工统计分析结果”、“职工构成图”和“数据统计”。其中,标题为“数据统计”的框架的名称属性也设置为“数据统计”。(3)在标题为“统计数据类型”框架内有2个选项按钮,用于选择统计数据类型(即统计数据是百分比还是绝对数),其名称属性和Caption属性均分别设置为“百分比”和“绝对数”,其中第一个选项按钮的Value属性设置为True。360统计分析模块的设计11(4)在标题为“统计图表类型”框架内有2个选项按钮,用于选择统计图表类型(即统计图表是柱形图还是饼图),其名称属性和Caption属性均分别设置为“柱形图”和“饼图”,其中第一个选项按钮的Value属性设置为True。(5)在标题为“选择统计分析项目”框架内有1个TreeView控件,用于选择要进行统计分析的具体项目(如部门、职称、学历、性别、年龄等),其名称为“TreeView1”。(6)在标题为“职工构成图”框架内有1个ChartSpace控件,用于绘制统计分析图,其名称为“ChartSpace1”。(7)在标题为“数据统计”框架内有1个Spreadsheet控件,用于显示职工的统计数据,其名称为“Spreadsheet1”。(8)在标题为“职工统计分析结果”框架底部有1个标签,用于显示职工的总体统计结果数据,其名称属性和Caption属性均设置为“职工总体情况”,SpecialEffect属性设置为“fmSpecialEffectSunken”;BackColor属性设置为“&H00FFC0C0&”。在程序中,这个标签的Caption属性将被重新设置。(9)在用户窗体上有2个命令按钮,分别用于重新设置统计分析项目和关闭窗体,其名称属性和Caption属性均分别设置为“重选”和“退出”。(1)要使用TreeView控件,必须先将该控件添加到控件工具箱。TreeView控件的名称为“MicrosoftTreeViewControl6.0(SP4)”。(2)要使用ChartSpace控件,必须先将该控件添加到控件工具箱。ChartSpace控件的名称为“MicrosoftOfficeChart11.0”(对Excel2003)或“MicrosoftOfficeChart10.0”(对Excel2002)或“MicrosoftOfficeChart9.0”(对Excel2000)。说明11-1-2在职职工统计分析窗体程序代码设计通过“职工统计分析”窗体,用户可以任意选择部门、性别、职称、学历和年龄等,对在职职工的构成进行分析,并将统计计算结果用数字和图表在窗体上显示出来。“职工统计分析”窗体的程序代码设计如下。1.定义模块级变量首先定义下面的模块级变量,它们放在窗体对象程序代码窗口的顶部:DimcnnAsADODB.ConnectionDimrsAsADODB.RecordsetDimmyDepartment'保存部门名称变量DimmyAcademic'保存学历类别变量DimmyProfessional'保存职称类别变量DimmySex(2)AsVariant'保存男女性别变量DimmyAge(6)AsVariant'保存年龄分组变量DimfinalcolumnAsIntegerDimmyTitleAsString'图表的标题文字变量2.为用户窗体设计Initialize事件程序为用户窗体设置Initialize事件,以便在启动“职工统计分析”窗体时,系统自动建立与数据库的连接,查询有关的基础设置数据表,为TreeView1控件设置节点,同时对职工361行政与人力资源管理应用案例详解的总体情况进行统计分析。“职工统计分析”窗体的Initialize事件程序代码如下:PrivateSubUserForm_Initialize()OnErrorResumeNextDimmysqlAsString,iAsIntegerDimTotalAsLong,MaleAsLong,FemaleAsLong,AverageAgeAsSingleDimmyArrayAsVariant'建立与数据库人事管理.mdb的连接Setcnn=NewADODB.ConnectionWithcnn.Provider=microsoft.jet.oledb.4.0.OpenThisWorkbook.Path&\人事管理.mdbEndWith'设置Treeview控件的某些属性TreeView1.Nodes.ClearTreeView1.LineStyle=tvwRootLinesTreeView1.Style=tvwTreelinesPlusMinusTextTreeView1.LabelEdit=tvwManual'----------设置部门一级节点及其下属的二级节点和三级节点----------myArray=Array(性别,年龄,学历,职称)'查询部门名称Setrs=NewADODB.Recordsetmysql=select部门名称from部门设置rs.Openmysql,cnn,adOpenKeyset,adLockOptimisticrs.MoveFirstReDimmyDepartment(rs.RecordCount)Setnodx=TreeView1.Nodes.Add(,,部门,部门)'设置部门一级节点Fori=1Tors.RecordCountmyDepartment(i)=rs!部门名称'设置部门二级节点(具体部门)Setnodx=TreeView1.Nodes.Add(部门,tvwChild,部门&i,myDepartment(i))Forj=0To3'设置部门三级节点(各部门下的具体分析项目)Setnodx=TreeView1.Nodes.Add(部门&i,tvwChild,部门&i&j_+1,myArray(j))Nextjrs.MoveNextNexti'----------设置学历一级节点及其下属的二级节点和三级节点----------myArray=Array(部门,性别,年龄)'查询学历类别(文化程度)Setrs=NewADODB.Recordsetmysql=select文化程度from文化程度设置rs.Openmysql,cnn,adOpenKeyset,adLockOptimisticReDimmyAcademic(rs.RecordCount)rs.MoveFirstSetnodx=TreeView1.Nodes.Add(,,学历,学历)'设置学历一级节点Fori=1Tors.RecordCountmyAcademic(i)=rs!文化程度'设置学历二级节点(具体的学历类别)Setnodx=TreeView1.Nodes.Add(学历,tvwChild,学历&_i,myAcademic(i))362统计分析模块的设计11Forj=0To2'设置学历三级节点(各学历类别下的具体分析项目)Setnodx=TreeView1.Nodes.Add(学历&i,tvwChild,学历&i&j_+1,myArray(j))Nextjrs.MoveNextNexti'----------设置职称一级节点及其下属的二级节点和三级节点----------myArray=Array(部门,性别,年龄)'查询职称类别Setrs=NewADODB.Recordsetmysql=select职称类别from职称类别设置rs.Openmysql,cnn,adOpenKeyset,adLockOptimisticReDimmyProfessional(rs.RecordCount)rs.MoveFirstSetnodx=TreeView1.Nodes.Add(,,职称,职称)'设置职称一级节点Fori=1Tors.RecordCountmyProfessional(i)=rs!职称类别'设置职称二级节点(具体的职称类别)Setnodx=TreeView1.Nodes.Add(职称,tvwChild,职称&_i,myProfessional(i))Forj=0To2'设置职称三级节点(各职称类别下的具体分析项目)Setnodx=TreeView1.Nodes.Add(职称&i,tvwChild,职称&i&j+_1,myArray(j))Nextjrs.MoveNextNexti'----------设置性别一级节点及其下属的二级节点和三级节点----------myArray=Array(部门,年龄,学历,职称)mySex(1)=男mySex(2)=女myArray=Array(部门,年龄,学历,职称)mySex(1)=男mySex(2)=女Setnodx=TreeView1.Nodes.Add(,,性别,性别)'设置性别一级节点Fori=1To2'设置性别二级节点(具体的性别,即男和女)Setnodx=TreeView1.Nodes.Add(性别,tvwChild,性别&i,mySex(i))Forj=0To3'设置性别三级节点(即男女类别下的具体分析项目)Setnodx=TreeView1.Nodes.Add(性别&i,tvwChild,性别&i&j_+1,myArray(j))NextjNexti'-----------设置年龄一级节点及其下属的二级节点和三级节点----------myArray=Array(部门,性别)'设置年龄分组myAge(1)==20myAge(2)=between21and30myAge(3)=between31and40363行政与人力资源管理应用案例详解myAge(4)=between41and50myAge(5)=between51and60myAge(6)=60Setnodx=TreeView1.Nodes.Add(,,年龄,年龄)'设置性别一级节点'设置各个年龄分组二级节点及其下属的三级节点Setnodx=TreeView1.Nodes.Add(年龄,tvwChild,年龄1,20岁以下)Forj=0To1Setnodx=TreeView1.Nodes.Add(年龄1,tvwChild,年龄1&j+_1,myArray(j))NextjSetnodx=TreeView1.Nodes.Add(年龄,tvwChild,年龄2,21-30岁)Forj=0To1Setnodx=TreeView1.Nodes.Add(年龄2,tvwChild,年龄2&j+_1,myArray(j))NextjSetnod
本文标题:EXCEL VBA行政与人力资源管理应用案例详解 第11章
链接地址:https://www.777doc.com/doc-950220 .html