EXCEL人事工资管理系统操作全过程Word文件下载.docx
《EXCEL人事工资管理系统操作全过程Word文件下载.docx》由会员分享,可在线阅读,更多相关《EXCEL人事工资管理系统操作全过程Word文件下载.docx(37页珍藏版)》请在冰豆网上搜索。
![EXCEL人事工资管理系统操作全过程Word文件下载.docx](https://file1.bdocx.com/fileroot1/2023-1/24/1fffdf82-d5ea-4fe6-949a-2003c2eb9553/1fffdf82-d5ea-4fe6-949a-2003c2eb95531.gif)
(5)执行【工具】→【保护】→【保护工作表】,打开【保护工作表】对话框,在“允许此工作表的所有用户进行”列表中取消选中的复选框,并输入密码(如图3)。
输入密码
图2图3
3、“欢迎界面”工作表的设计步骤与“封面”工作表的步骤基本相同,只不过界面中多了一个单位、制作者、操作提示和【人事管理系统】菜单(如图4)。
按此菜单
进入系统
图4
要隐藏“欢迎界面”工作表中的单元格,可在工作簿的VBE窗口中插入一个模块2,并输入如下代码如下:
PrivateSub隐藏欢迎界面单元格()
欢迎界面"
以上代码是对选中的单元格进行隐藏,使欢界面更加美观。
上述代码输入完成后退出并保存,然后在【工具】→【宏】菜单中运行“隐藏欢迎界面单元格”宏,即可实现“欢迎界面”工作表中单元格的隐藏。
至此人事工资管理系统工作簿建立完成,系统框架也基本形成。
2007年3月15日
通讯地址:
浙江省诸暨市滨江中路19号会计核算中心许国办公室电话
邮政编码311800Email:
网址:
——设计系统登录窗口
(一)
诸暨市教育局核算中心许国
诸暨市教育局郑文建
任何一个应用系统,都应有一个系统登录窗口,以保护应用系统的安全。
当打开应用系统时,系统将弹出登录窗口,只有输入了正确的用户名和密码后,才能进入系统。
二、用户名和密码的保存
用户名和密码既可以直接编写在登录程序中,也可以单独设计一个用来存放用户名和密码的工作表,后者具有较大的灵活性,可以随时增加用户名和密码,也可以随时更改用户名和密码。
本人事工资管理系统的登录用户名和密码的设置采用第二种方式,但用户名和密码都为预设,不能更改。
在“用户密码”工作表中的A列存放用户名(如图5),B列存放与A列用户名对应的登录密码,该工作表被保护起来,并被隐藏(用VBA代码隐藏),以防修改和泄露密码。
图5
三、用户登录窗口
1、用户登录窗口结构
用户登录窗口的结构如图6所示。
由1个用户窗体和2个标签、2个文本框及2个命令按钮组成,用户窗体和各个控件的功能及属性设置如下。
图6
(1)用户窗体:
名称重命名为“用户登录”,Caption属性设置为“用户登录”。
(2)标签Label1和Label2:
对两个文本框的功能进行说明,它们的Caption属性分别设置为“用户名”和“密码”。
(3)文本框Textbox1:
输入用户名
(4)文本框Textbox2:
输入密码,其PassworkChar属性设置为“*”。
(5)命令按钮CommandButton1:
输入正确的用户名和密码后,单击此按钮进入系统,其Caption属性设置为“进入系统”,Default属性设置为True.
(6)命令按钮CommandButton2:
退出系统,其Caption属性设置为“退出系统”。
2、登录窗口代码设计
(1)在VBE窗口的窗体设计中,双击“进入系统”按钮为其设置Click事件,程序代码如下:
PrivateSubCommandButton1_Click()
'
如果出现错误,就转向错误处理程序errorhandle
OnErrorGoToerrorhandle
DimwsAsWorksheet
Setws=Worksheets("
用户密码"
)'
赋值
IfTextBox1.Text="
"
Then
如果用户名为空,就将焦点移到用户名文本框,并退出程序
TextBox1.SetFocus
ExitSub:
EndIf
如果用户名和密码都正确,就卸载用户登录窗口,
创建自定义菜单,退出程序
Ifws.Range("
a2"
).Text=TextBox1.Text_
Andws.Range("
b2"
).Text=TextBox2.TextThen
Unloaduserform1
Call自定义菜单:
Sheets("
ExitSub
ElseIfws.Range("
).Text<
>
TextBox2.TextThen
MsgBox"
密码错误!
vbCritical,"
警告"
TextBox2="
TextBox2.SetFocus:
ExitSub
TextBox1.Text_
用户名错误!
ExitSub:
用户名和密码不存在!
TextBox1="
:
TextBox2="
TextBox1.SetFocus:
errorhandle:
'
进入错误处理程序
ThisWorkbook.Closesavechanges:
=False'
关闭工作簿但不保存
以上代码是对系统登录窗口中输入的用户名和密码与“用户密码”工作表中的用户名和密码比对,如果不正确,则弹出有关的警告信息框,如果正确,就关闭登录窗口,然后创建自定义菜单,进入欢迎界面工作簿。
(2)在VBE窗口的窗体设计中,双击“退出系统”按钮为其设置Click事件,程序代码如下:
PrivateSubCommandButton2_Click()
以上代码是在按“退出系统”按钮时关闭工作簿但不保存。
3、设计工作簿对象的Open事件程序
为了能够在打开“人事工资管理系统”工作簿时启动登录系统窗口,对工作簿对象设置Open事件程序,在VBE窗口中双击“Thisworkbook”(如图7),选择右边窗口中的Workbook和Open事件,并输入如下代码:
此处选择Workbook和Open事件
图7
PrivateSubWorkbook_Open()
Call启动系统
以上代码使得在打开“人事工资管理系统”时,系统就调用“启动系统”模块,出现登录窗口。
2007年3月15日
——设计系统登录窗口
(二)
在打开“人事工资管理系统”工作簿时,首先激活工作簿对象的Open事件程序,随之会出现一个“封面工作表”和一个“登录窗口”界面,此界面需要调用下面的系统启动程序。
4、系统启动程序
在工作簿的VBE窗口中插入一个模块3,输入如下代码:
PublicSub启动系统()
Worksheets("
Range("
a1"
ActiveWindow.DisplayWorkbookTabs=False'
不显示工作表标签
IfWorksheets("
).Visible=TrueThen
如果用户密码表不隐藏,就隐藏它
).Visible=xlSheetVeryHidden
EndIf
保护封面工作表
ActiveSheet.ProtectDrawingObjects:
=True,contents:
=True,Scenarios:
=True
ActiveSheet.EnableSelection=xlNoSelection
userform1.Show'
启动用户登录窗口
以上代码首先激活“封面”工作表,然后隐藏工作表标签,判断“用户密码”工作表是否隐藏,如果不隐藏,就隐藏它,并对“封面”工作表进行保护,启动用户登录窗口。
5、人事管理菜单程序
在登录窗口中输入正确的用户名和密码后,就可进入人事管理系统的欢迎界面,如图8。
人事管理系统菜单
图8
图中的“人事管理菜单”需要调用“自定义菜单”程序,此程序可在工作簿的VBE窗口中插入一个模块4生成,其完整代码如下:
DimmymenuobjectAsCommandBarPopup
DimmymenuitemAsObject
DimmysubmenuitemAsObject
PublicSub自定义菜单()
OnErrorResumeNext'
如果出现错误,就忽略它,继续运行程序
删除已经存在的自定义菜单
Application.CommandBars
(1).Controls("
【人事管理系统】"
).Delete
创建自定义菜单
Setmymenuobject=Application.CommandBars
(1)._
Controls.Add(Type:
=msoControlPopup,before:
=11,temporary:
=True)
Withmymenuobject
.Caption="
.Width=70:
.BeginGroup=True:
EndWith
为自定义菜单添加“事业在职”主菜单并添加有关的子菜单
Call主菜单("
事业在职"
)
Call子菜单("
在职名册表"
"
在职审批表"
在职报批表"
事业离退休"
离退休名册表"
离退休审批表"
离退休报批表"
子程序“主菜单”
PublicSub主菜单(mycapTionAsString)
Setmymenuitem=mymenuobject.Controls.Add(Type:
=msoControlPopup)
Withmymenuitem
.Caption=mycapTion
子程序“子菜单”
PublicSub子菜单(mycapTionAsString,myonactionAsString)
Setmysubmenuitem=mymenuitem.Controls.Add(Type:
=msoControlButton)
Withmysubmenuitem
.OnAction=myonaction
注:
为节省篇幅,在一行中使用了冒号隔开多条指令(下同)。
以上代码是在进入系统后首先删除已经存在的自定义菜单,然后再创建一个自定义菜单,并调用子程序的“主菜单”和“子菜单”程序。
6、激活人事管理菜单
为了能使上面创建的“人事管理系统”菜单能够使用,必须使用程序激活,可在工作簿的VBE窗口中插入一个模块5完成,其完整代码如下:
PrivateSub在职名册表()
事业"
PrivateSub在职审批表()
事业审批表"
PrivateSub在职报批表()
事业(报批表)"
PrivateSub离退休名册表()
离退休"
PrivateSub离退休审批表()
PrivateSub离退休报批表()
离退休(报批表)"
以上代码是在分别单击“人事管理系统”菜单中的“在职名册表”等子菜单时,激活自定义菜单,然后相应激活各自的工作表,激活后即可对工作表进行操作。
至此,系统登录窗口的设计工作完成,为用户提供了一个比较友好的人机交互界面。
——设计在职人员工改名册表
(一)
进入系统后,选择【人事管理系统】→【事业在职】→【在职名册表】菜单,即可打开“诸暨市事业单位工作人员收入分配制度改革名册表”(以下简称在职名册表),如图9。
图9
四、在职名册表
1、按工改的要求设计好此表格的相应栏目,然后输入单位工作人员的相关信息,其中A列至S列的信息由手工输入,W列的信息如果与K列的信息一致,则可由计算自动给出,如果不一致,则需手工输入,这里我们暂以手工输入为例说明,其他列的信息由计算机自动给出。
2、表中的岗位名称,职务名称要统一标准。
(1)岗位名称分为管理、专技、工人、见习。
(2)职务名称要按岗位分为四大类,其中管理岗位的职务名称分为处级正职、处级副职、科级正职、科级副职、科员、办事员;
专技岗位的职务名称分为正高、副高、中级、助理级、员级;
工人岗位的职务名称分为高级级技师、技师、高级工、中级工、初级工、普工。
见习岗位(即新分配人员)的职务名称为见习。
(3)岗位为见习的人员,由于在城区和非城区工作其工资标准有差别,必须在备注栏列注明是“城区”还是“非城区”。
3、需要手工输入的信息录入完成后,我们就需要对计算机自动给出的列进行处理。
(1)T列(工改前工资中的津贴30%)、U列(工改前工资中的10%浮动工资)和AB列(工改后工资中的10%浮动工资)工资标准的处理。
在工作簿的VBE窗口中插入一个模块6,并输入代码如下:
PrivateSub津贴30及浮动10()
Row=Worksheets("
).[a65536].End(xlUp).Row'
取得行数
Application.ScreenUpdating=False'
关闭屏幕更新
Fori=8ToRow
如果J列I行单元格为"
管理"
或者"
专技"
那么T列,U列,AB列的公式如下
IfRange("
j"
&
i)="
OrRange("
T"
i)=WorksheetFunction.Round(Range("
s"
i)*1.1*3/7,0)
u"
i)*0.1,0)
AB"
i)=WorksheetFunction.Round((Range("
Y"
i)+Range("
aa"
i))*0.1,0)
工人"
那么T列的公式如下,,U列和AB列的值为15
ElseIfRange("
i)*3/7,0)
i)=15
见习"
并且AF列I行单元格为"
非城区"
那么T列的公式如下,,U列和AB列的值为0
AndRange("
af"
i)=0
城区"
那么T列,U列,AA列和AB列的值为0
EndIf:
Nexti
Application.ScreenUpdating=True'
打开屏幕更新
以上代码是在先判断J列I行单元格以及AF列I行单元格的内容,然后根据此内容对T列、U列和AB列进行处理,自动获得相应公式或数值。
上述代码输入完成后退出并保存,然后在【工具】→【宏】菜单中运行“津贴30及浮动10”宏,即可得到T列、U列和AB列的值。
(2)Y列单元格的数据处理。
Y列为工改后的岗位工资标准,岗位工资的标准是根据现任职称或职务而定的,如中级职称为680元,要使此列的标准自动给出,需建立一个自定义函数,具体可在工作簿的VBE窗口中插入一个模块7完成,其完整代码如下:
Functiongz(aAsString)AsSingle
gz=0
如果职务为处级正职,那么岗位工资为1045
Ifa="
处级正职"
Thengz=1045
ElseIfa="
处级副职"
Thengz=850
科级正职"
Thengz=720
科级副职"
Thengz=640
科员"
Thengz=590
办事员"
Thengz=550
正高"
Thengz=1420
副高"
Thengz=930
中级"
Thengz=680
ElseIfa="
助理级"
员级"
高级技师"
Thengz=830
技师"
Thengz=690
高级工"
Thengz=615
中级工"
Thengz=575
初级工"
Thengz=545
普工"
Thengz=540
Else:
EndFunction
以上代码是一个自定义函数,函数名gz,a为变量,代表职称或职务,如职务为处级正职,则岗位工资为1045元。
上述代码输入完成后退出并保存,在Y8单元格中输入“=gz(w8)”,可得到Y8单元格的值,向下拖动此公式可得到其他单元格的岗位工资标准。
此文在《软件报》2007年第14期开始连载
——设计在职人员工改名册表
(二)
(3)X列单元格的数据处理。
X列为工改后岗位工资的岗位级别,它与岗位工资的标准或职称