1最新EXCEL人事工资管理系统——建立人事工资管理系统工作簿诸暨市教育局核算中心许国诸暨市教育局郑文建按照浙江省人事厅的统一部署,我市于2007年2月初进行了机关事业单位工资制度改革,这次工资制度改革是新中国成立以来第四次大的改革,与以往历次工资制度改革相比,也是情况最复杂、难度最大的一次,具体工改时要根据套改“三要素”(职务或职称、任职年限、套改年限)进行套改。这对于具体负责工资调整的办事人员来说,增加了许多工作,就一所学校来说,工资调整时都要手工填写好几百张内容差不多的表格,工作量很大,本人经过摸索,发现用EXCEL的VBA功能可以轻松地处理调资工作,只要基础工作一次性做好后,调资就变得非常方便,下面简要地介绍一下具体的开发过程。一、建立人事工资管理系统工作簿1、在计算机的磁盘上建立一个名称为“2006人事工资管理系统”的EXCEL工作簿文件,并在此工作簿中建立“封面”、“欢迎界面”、“事业名册表”、“事业审批表”、“事业报批表”、“离退休名册表”、“离退休审批表”、“离退休报批表”等工作表,以及存放用户名和密码的工作表“用户密码”等组成,这些工作表事先由手工插入并重命名。当系统运行后,一些工作表将被自动隐藏(如“用户密码”工作表)。2、“封面”工作表是进入工资管理系统的首页,当打开工作簿和关闭工作簿时系统都将激活“封面”工作表,“封面”工作表的界面如图1所示,其设计步骤如下:图12(1)在当前的工作表中插入艺术字“欢迎使用《XG人事工资管理系统V1.0》”(分两行输入“欢迎使用”和“《XG人事工资管理系统V1.0》”)。(2)选取整张工作表,将单元格颜色填充为“蓝-灰”色。(3)将第36行至65536行、第R列至IV列全部隐藏。由于用手工隐藏单元格比较麻烦,可在工作簿中的VBE窗口中插入一个模块1,并输入如下代码:PrivateSub隐藏封面单元格()Sheets(封面).ActivateRows(36:65536).Select'选中36行至65536行Selection.EntireRow.Hidden=True'隐藏选中的单元格Columns(r:iv).Select'选中第R列至IV列Selection.EntireColumn.Hidden=TrueEndSub代码说明:以上代码是对选中的单元格进行隐藏,使系统封面更加美观。上述代码输入完成后退出并保存,然后在【工具】→【宏】菜单中运行“隐藏封面单元格”宏,即可实现单元格的隐藏。(4)执行【工具】→【选项】命令,打开【选项】对话框,单击【视图】选项卡,在“窗口选项中”中保留“水平滚动条”和“垂直滚动条”两个复选框外,取消其他的复选框(如图2)。(5)执行【工具】→【保护】→【保护工作表】,打开【保护工作表】对话框,在“允许此工作表的所有用户进行”列表中取消选中的复选框,并输入密码(如图3)。图2图33、“欢迎界面”工作表的设计步骤与“封面”工作表的步骤基本相同,只不过界面中多输入密码3了一个单位、制作者、操作提示和【人事管理系统】菜单(如图4)。图4要隐藏“欢迎界面”工作表中的单元格,可在工作簿的VBE窗口中插入一个模块2,并输入如下代码如下:PrivateSub隐藏欢迎界面单元格()Sheets(欢迎界面).ActivateRows(36:65536).Select'选中36行至65536行Selection.EntireRow.Hidden=True'隐藏选中的单元格Columns(r:iv).Select'选中第R列至IV列Selection.EntireColumn.Hidden=TrueEndSub代码说明:以上代码是对选中的单元格进行隐藏,使欢界面更加美观。上述代码输入完成后退出并保存,然后在【工具】→【宏】菜单中运行“隐藏欢迎界面单元格”宏,即可实现“欢迎界面”工作表中单元格的隐藏。至此人事工资管理系统工作簿建立完成,系统框架也基本形成。2007年3月15日通讯地址:浙江省诸暨市滨江中路19号会计核算中心许国办公室电话05757375026邮政编码311800Email:xuguo@zjjy.com网址:人事工资管理系统——设计系统登录窗口(一)诸暨市教育局核算中心许国诸暨市教育局郑文建任何一个应用系统,都应有一个系统登录窗口,以保护应用系统的安全。当打开应用系统时,系统将弹出登录窗口,只有输入了正确的用户名和密码后,才能进入系统。二、用户名和密码的保存用户名和密码既可以直接编写在登录程序中,也可以单独设计一个用来存放用户名和密码的工作表,后者具有较大的灵活性,可以随时增加用户名和密码,也可以随时更改用户名和密码。本人事工资管理系统的登录用户名和密码的设置采用第二种方式,但用户名和密码都为预设,不能更改。在“用户密码”工作表中的A列存放用户名(如图5),B列存放与A列用户名对应的登录密码,该工作表被保护起来,并被隐藏(用VBA代码隐藏),以防修改和泄露密码。图5三、用户登录窗口1、用户登录窗口结构用户登录窗口的结构如图6所示。由1个用户窗体和2个标签、2个文本框及2个命令按钮组成,用户窗体和各个控件的功能及属性设置如下。图6(1)用户窗体:名称重命名为“用户登录”,Caption属性设置为“用户登录”。(2)标签Label1和Label2:对两个文本框的功能进行说明,它们的Caption属性分别设置为“用户名”和“密码”。5(3)文本框Textbox1:输入用户名(4)文本框Textbox2:输入密码,其PassworkChar属性设置为“*”。(5)命令按钮CommandButton1:输入正确的用户名和密码后,单击此按钮进入系统,其Caption属性设置为“进入系统”,Default属性设置为True.(6)命令按钮CommandButton2:退出系统,其Caption属性设置为“退出系统”。2、登录窗口代码设计(1)在VBE窗口的窗体设计中,双击“进入系统”按钮为其设置Click事件,程序代码如下:PrivateSubCommandButton1_Click()'如果出现错误,就转向错误处理程序errorhandleOnErrorGoToerrorhandleDimwsAsWorksheetSetws=Worksheets(用户密码)'赋值IfTextBox1.Text=Then'如果用户名为空,就将焦点移到用户名文本框,并退出程序TextBox1.SetFocusExitSub:EndIf'如果用户名和密码都正确,就卸载用户登录窗口,'创建自定义菜单,退出程序Ifws.Range(a2).Text=TextBox1.Text_Andws.Range(b2).Text=TextBox2.TextThenUnloaduserform1Call自定义菜单:Sheets(欢迎界面).ActivateExitSubElseIfws.Range(a2).Text=TextBox1.Text_Andws.Range(b2).TextTextBox2.TextThenMsgBox密码错误!,vbCritical,警告TextBox2=TextBox2.SetFocus:ExitSubElseIfws.Range(a2).TextTextBox1.Text_Andws.Range(b2).Text=TextBox2.TextThenMsgBox用户名错误!,vbCritical,警告TextBox2=TextBox2.SetFocus:ExitSub:EndIfMsgBox用户名和密码不存在!,vbCritical,警告TextBox1=:TextBox2=TextBox1.SetFocus:ExitSuberrorhandle:'进入错误处理程序ThisWorkbook.Closesavechanges:=False'关闭工作簿但不保存EndSub6代码说明:以上代码是对系统登录窗口中输入的用户名和密码与“用户密码”工作表中的用户名和密码比对,如果不正确,则弹出有关的警告信息框,如果正确,就关闭登录窗口,然后创建自定义菜单,进入欢迎界面工作簿。(2)在VBE窗口的窗体设计中,双击“退出系统”按钮为其设置Click事件,程序代码如下:PrivateSubCommandButton2_Click()ThisWorkbook.Closesavechanges:=False'关闭工作簿但不保存EndSub代码说明:以上代码是在按“退出系统”按钮时关闭工作簿但不保存。3、设计工作簿对象的Open事件程序为了能够在打开“人事工资管理系统”工作簿时启动登录系统窗口,对工作簿对象设置Open事件程序,在VBE窗口中双击“Thisworkbook”(如图7),选择右边窗口中的Workbook和Open事件,并输入如下代码:图7PrivateSubWorkbook_Open()Sheets(封面).ActivateCall启动系统EndSub代码说明:以上代码使得在打开“人事工资管理系统”时,系统就调用“启动系统”模块,出现登录窗口。2007年3月15日通讯地址:浙江省诸暨市滨江中路19号会计核算中心许国办公室电话05757375026邮政编码311800Email:xuguo@zjjy.com网址:人事工资管理系统——设计系统登录窗口(二)诸暨市教育局核算中心许国诸暨市教育局郑文建在打开“人事工资管理系统”工作簿时,首先激活工作簿对象的Open事件程序,随之会出现一个“封面工作表”和一个“登录窗口”界面,此界面需要调用下面的系统启动程序。4、系统启动程序在工作簿的VBE窗口中插入一个模块3,输入如下代码:PublicSub启动系统()Worksheets(封面).ActivateRange(a1).ActivateActiveWindow.DisplayWorkbookTabs=False'不显示工作表标签IfWorksheets(用户密码).Visible=TrueThen'如果用户密码表不隐藏,就隐藏它Worksheets(用户密码).Visible=xlSheetVeryHiddenEndIf'保护封面工作表ActiveSheet.ProtectDrawingObjects:=True,contents:=True,Scenarios:=TrueActiveSheet.EnableSelection=xlNoSelectionuserform1.Show'启动用户登录窗口EndSub代码说明:以上代码首先激活“封面”工作表,然后隐藏工作表标签,判断“用户密码”工作表是否隐藏,如果不隐藏,就隐藏它,并对“封面”工作表进行保护,启动用户登录窗口。5、人事管理菜单程序在登录窗口中输入正确的用户名和密码后,就可进入人事管理系统的欢迎界面,如图8。图8人事管理系统菜单8图中的“人事管理菜单”需要调用“自定义菜单”程序,此程序可在工作簿的VBE窗口中插入一个模块4生成,其完整代码如下:DimmymenuobjectAsCommandBarPopupDimmymenuitemAsObjectDimmysubmenuitemAsObjectPublicSub自定义菜单()OnErrorResumeNext'如果出现错误,就忽略它,继续运行程序'删除已经存在的自定义菜单Application.CommandBars(1).Controls(【人事管理系统】).Delete'创建自定义菜单Setmymenuobject=Application.CommandBars(1)._Controls.Add(Type:=msoControlPopup,before:=11,temporary:=True)Withmymenuobject.Caption=【人事管理系统】.Width=70:.BeginG