《EXCEL VBA行政与人力资源管理应用案例详解 第11章.pdf》由会员分享,可在线阅读,更多相关《EXCEL VBA行政与人力资源管理应用案例详解 第11章.pdf(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
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
26、=性别 Then 分析某部门的男女职工分布 Call 三级节点项目查询(mySex,性别,所属部门,Node.Parent)ElseIf Node.Text=年龄 Then 分析某部门的职工年龄分布 Call 年龄项目 Call 三级节点项目查询(myAge,年龄,所属部门,Node.Parent)ElseIf Node.Text=学历 Then 分析某部门的职工学历分布 Call 三级节点项目查询(myAcademic,学历,所属部门,Node.Parent)ElseIf Node.Text=职称 Then 分析某部门的职工职称分布 Call 三 级 节 点 项 目 查 询(myProfes
27、sional,职 称,所 属 部 门,_ Node.Parent)End If 统计某部门的男职工或女职工总数,并显示在窗体中 mysql=select*from 职工基本信息 where 所属部门=&Node.Parent&Set rs=New ADODB.Recordset rs.Open mysql,cnn,adOpenKeyset,adLockOptimistic 数据统计.Caption=Node.Parent&(总人数&rs.RecordCount&)按 _&Node.Text&人数分布统计 ElseIf Left(Node.Key,2)=学历 Then 按学历进行详细统计分析 I
28、f Node.Text=部门 Then 分析某学历类别在各部门的分布 Call 三 级 节 点 项 目 查 询(myDepartment,所 属 部 门,学 历,_ Node.Parent)ElseIf Node.Text=性别 Then 分析某学历类别的男女职工的分布 Call 三级节点项目查询(mySex,性别,学历,Node.Parent)ElseIf Node.Text=年龄 Then 分析某年龄组的某学历类别的分布 Call 年龄项目 Call 三级节点项目查询(myAge,年龄,学历,Node.Parent)End If 统计某学历类别下的职工总数,并显示在窗体中 mysql=se
29、lect*from 职工基本信息 where 学历=&Node.Parent&Set rs=New ADODB.Recordset rs.Open mysql,cnn,adOpenKeyset,adLockOptimistic 数据统计.Caption=Node.Parent&(总人数&rs.RecordCount&)按 _&Node.Text&人数分布统计 ElseIf Left(Node.Key,2)=职称 Then 按职称进行详细统计分析 If Node.Text=部门 Then 分析某职称类别在各部门的分布 Call 三 级 节 点 项 目 查 询(myDepartment,所 属 部
30、 门,职 称,_ Node.Parent)ElseIf Node.Text=性别 Then 分析某职称类别的男女职工的分布 Call 三级节点项目查询(mySex,性别,职称,Node.Parent)ElseIf Node.Text=年龄 Then 分析某职称类别的年龄组职工的分布 Call 年龄项目 Call 三级节点项目查询(myAge,年龄,职称,Node.Parent)End If 统计某职称类别下的职工总数,并显示在窗体中 mysql=select*from 职工基本信息 where 职称=&Node.Parent&Set rs=New ADODB.Recordset rs.Open
31、 mysql,cnn,adOpenKeyset,adLockOptimistic 数据统计.Caption=Node.Parent&(总人数&rs.RecordCount&)按 _&Node.Text&人数分布统计 ElseIf Left(Node.Key,2)=性别 Then 按性别进行详细统计分析 If Node.Text=部门 Then 分析男女职工在各部门的分布 366 统计分析模块的设计 11 Call 三 级 节 点 项 目 查 询(myDepartment,所 属 部 门,性 别,_ Node.Parent)ElseIf Node.Text=年龄 Then 分析男女职工在各年龄分
32、组的分布 Call 年龄项目 Call 三级节点项目查询(myAge,年龄,性别,Node.Parent)ElseIf Node.Text=学历 Then 分析男女职工在各学历类别的分布 Call 三级节点项目查询(myAcademic,学历,性别,Node.Parent)ElseIf Node.Text=职称 Then 分析男女职工在各职称类别的分布 Call 三 级 节 点 项 目 查 询(myProfessional,职 称,性 别,_ Node.Parent)End If 统计男职工或女职工总数,并显示在窗体中 mysql=select*from 职工基本信息 where 性别=&No
33、de.Parent&Set rs=New ADODB.Recordset rs.Open mysql,cnn,adOpenKeyset,adLockOptimistic 数据统计.Caption=Node.Parent&(总人数&rs.RecordCount&)按 _&Node.Text&人数分布统计 ElseIf Left(Node.Key,2)=年龄 Then 按年龄进行详细统计分析 If Node.Text=部门 Then 分析不同年龄分组在各部门的分布 Call 三 级 节 点 项 目 查 询(myDepartment,所 属 部 门,年 龄,_ Node.Parent.Text)El
34、seIf Node.Text=性别 Then 分析不同年龄分组在男女职工的分布 Call 三级节点项目查询(mySex,性别,年龄,Node.Parent.Text)End If 统计某年龄组的职工总数,并显示在窗体中 mysql=select*from 职工基本信息 where 年龄&AgeValue_(Node.Parent.Text)Set rs=New ADODB.Recordset rs.Open mysql,cnn,adOpenKeyset,adLockOptimistic 数据统计.Caption=Node.Parent&(总人数&rs.RecordCount&)按 _&Node
35、.Text&人数分布统计 End If 设置图表标题文字 myTitle=Node.Parent&按&Node.Text&人数分布统计图 End If 进行统计计算,并显示在窗口底部的表格中 finalcolumn=Spreadsheet1.ActiveSheet.Range(AA1).End(xlToLeft).Column Spreadsheet1.ActiveSheet.Cells(1,finalcolumn+1).Value=合计 sumt=0 For i=2 To finalcolumn sumt=sumt+Val(Spreadsheet1.ActiveSheet.Cells(2,i
36、).Value)Next i Spreadsheet1.ActiveSheet.Cells(2,finalcolumn+1).Value=sumt For i=2 To finalcolumn+1 Spreadsheet1.ActiveSheet.Cells(3,i).Value=Spreadsheet1._ ActiveSheet.Cells(2,i).Value/sumt Spreadsheet1.ActiveSheet.Cells(3,i).NumberFormat=0.00%Next i Spreadsheet1.ActiveSheet.Cells.Columns.AutoFit -开
37、始绘图-367 行政与人力资源管理应用案例详解 Call 绘图 End Sub 在上面的程序中,调用了一个名为“清除图表”的子程序、一个名为“一级节点项目查询”的子程序、一个名为“三级节点项目查询”的子程序、一个名为“年龄项目”的子程序和一个名为“绘图”的子程序,各个子程序的功能说明如下:?“清除图表”子程序:清除窗体上的图表和数据,准备进行其他项目的统计分析。?“一级节点项目查询”子程序:根据选择的 TreeView1 控件的一级节点项目对数据表进行查询。?“三级节点项目查询”子程序:根据选择的 TreeView1 控件的三级节点项目对数据表进行查询。?“绘图”子程序:根据查询出的数据进行统
38、计分析(计算百分比、绘图等)。?“年龄项目”子程序:为 Spreadsheet1 控件中的数据设置标题。这 5 个子程序的程序代码分别如下所示:Public Sub 清除图表()On Error Resume Next Set chtNewChart=ChartSpace1.Charts chtNewChart.Delete 0 ChartSpace1.HasChartSpaceTitle=False ChartSpace1.HasChartSpaceLegend=False End Sub Public Sub 一级节点项目查询(myItem As Variant,myName As Str
39、ing)Dim i As Integer For i=1 To UBound(myItem)If myName=年龄 Then mysql=select*from 职工基本信息 where 年龄&myItem(i)Else Spreadsheet1.ActiveSheet.Cells(1,i+1).Value=myItem(i)mysql=select*from 职工基本信息 where&myName&=&_ myItem(i)&End If Set rs=New ADODB.Recordset rs.Open mysql,cnn,adOpenKeyset,adLockOptimistic S
40、preadsheet1.ActiveSheet.Cells(2,i+1).Value=rs.RecordCount Next i End Sub Public Sub 三级节点项目查询(myItem As Variant,myName As String,myBoot As_ String,myNode As String)For i=1 To UBound(myItem)If myBoot=年龄 Then Spreadsheet1.Cells(1,i+1).Value=myItem(i)mysql=select*from 职工基本信息 _&where&myName&=&myItem(i)&_
41、&and 年龄&AgeValue(myNode)Else If myName=年龄 Then mysql=select*from 职工基本信息 where 年龄&myItem(i)_ 368 统计分析模块的设计 11&and&myBoot&=&myNode&Else Spreadsheet1.Cells(1,i+1).Value=myItem(i)mysql=select*from 职工基本信息 _&where&myName&=&myItem(i)&_&and&myBoot&=&myNode&End If End If Set rs=New ADODB.Recordset rs.Open my
42、sql,cnn,adOpenKeyset,adLockOptimistic Spreadsheet1.Cells(2,i+1).Value=rs.RecordCount Next i End Sub Public Sub 绘图()Dim i As Integer ReDim asCategories(finalcolumn),aiValues(finalcolumn)For i=0 To finalcolumn-2 asCategories(i)=Spreadsheet1.ActiveSheet.Cells(1,i+2).Value If 百分比.Value=True Then aiValue
43、s(i)=Round(Spreadsheet1.Cells(3,i+2)*100,2)ElseIf 绝对数.Value=True Then aiValues(i)=Spreadsheet1.Cells(2,i+2)End If Next i Set chConstants=ChartSpace1.Constants Set chtNewChart=ChartSpace1.Charts.Add If 柱形图.Value=True Then chtNewChart.Type=chConstants.chChartTypeColumnClustered ChartSpace1.HasChartSpa
44、ceLegend=False ElseIf 饼图.Value=True Then chtNewChart.Type=chConstants.chChartTypePie ChartSpace1.HasChartSpaceLegend=True End If chtNewChart.SetData chConstants.chDimCategories,_ chConstants.chDataLiteral,asCategories chtNewChart.SeriesCollection(0).SetData chConstants.chDimValues,_ chConstants.chDa
45、taLiteral,aiValues chtNewChart.SeriesCollection(0).DataLabelsCollection.Add chtNewChart.SeriesCollection(0).DataLabelsCollection(0).Font.Color=red ChartSpace1.HasChartSpaceTitle=True ChartSpace1.ChartSpaceTitle.Caption=myTitle End Sub Public Sub 年龄项目()Spreadsheet1.ActiveSheet.Cells(1,2).Value=20岁以下
46、Spreadsheet1.ActiveSheet.Cells(1,3).Value=21-30岁 Spreadsheet1.ActiveSheet.Cells(1,4).Value=31-40岁 Spreadsheet1.ActiveSheet.Cells(1,5).Value=41-50岁 Spreadsheet1.ActiveSheet.Cells(1,6).Value=51-60岁 369 行政与人力资源管理应用案例详解 Spreadsheet1.ActiveSheet.Cells(1,7).Value=60岁以上 End Sub 在“三级节点项目查询”子程序中,又调用了一个名为“Age
47、Value”的自定义函数,其功能是确定年龄分组值,程序代码如下:Public Function AgeValue(myNodeText As String)As String Select Case myNodeText Case 20岁以下 AgeValue=myAge(1)Case 21-30岁 AgeValue=myAge(2)Case 31-40岁 AgeValue=myAge(3)Case 41-50岁 AgeValue=myAge(4)Case 51-60 岁 AgeValue=myAge(5)Case 60 岁以上 AgeValue=myAge(6)End Select End
48、Function 4为“百分比”和“绝对数”两个选项按钮设计 Click 事件程序 为“百分比”和“绝对数”两个选项按钮设置 Click 事件,以便当单击这两个选项按钮时,清除窗体上存在的图表,并重新绘制图表。“百分比”和“绝对数”两个选项按钮的Click 事件程序代码分别如下所示:Private Sub 百分比_Click()Call 清除图表 Call 绘图 End Sub Private Sub 绝对数_Click()Call 清除图表 Call 绘图 End Sub 5为“柱形图”和“饼图”两个选项按钮设计 Click 事件程序 为“柱形图”和“饼图”两个选项按钮设置 Click 事件
49、,以便当单击这两个选项按钮时,清除窗体上存在的图表,并重新绘制图表。“柱形图”和“饼图”两个选项按钮的 Click事件程序代码分别如下所示:Private Sub 柱形图_Click()Call 清除图表 Call 绘图 End Sub Private Sub 饼图_Click()Call 清除图表 Call 绘图 End Sub 6为【重选】按钮设计 Click 事件程序 单击【重选】按钮,将 TreeView1 的节点收缩,并设置清除图表。【重选】按钮的 Click事件程序代码如下:370 统计分析模块的设计 11 Private Sub 重选_Click()Dim i As Intege
50、r For i=1 To TreeView1.Nodes.Count TreeView1.Nodes(i).Expanded=False Next i Spreadsheet1.ActiveSheet.Cells.ClearContents Spreadsheet1.ActiveSheet.Range(A1).Value=项目 Spreadsheet1.ActiveSheet.Range(A2).Value=人数 Spreadsheet1.ActiveSheet.Range(A3).Value=百分比 Call 清除图表 End Sub 7为【退出】按钮设计 Click 事件程序 执行【退出】