利用VBA编写Excel中的工资条与工资查询窗口_第1页
利用VBA编写Excel中的工资条与工资查询窗口_第2页
利用VBA编写Excel中的工资条与工资查询窗口_第3页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、利用VBA编写Excel中的工资条与工资查询窗口1 引言VBA是附属在Office办公软件包中的一套程序语言,主要 用于自定义应用程序中的功能,以及加强应用程序之间的互动 1 。它继承了 Basic 的很多特性以及优点,加快了桌面软件设 计的发展。使用VBA语言不仅能够减轻办公人员的工作负担, 而 且还可以使 Execl 的大量重复性操作变得简单快捷。VBA具有如下两个特点1:2 背景高校教师工资管理表中一般包括教师编号、 姓名、基本工资、 职位岗位补贴、应扣税金、住房补贴和应扣保险等项目内容。我 们假定每位教师的应发工资=基本工资+职位岗位补贴+住房 补贴应扣税金应扣保险, 我们在 Excl

2、e 中分别建立了教师基 本资料表、工资表等。工资条是发放工资时交给员工的工资项目清单, 其数据来源 于工资表, 与工资表所不同的是: 每个工资条都应该包含标题以 及该员工所有工资数据的详细信息。 编制工资条就是在工资表中 为每一位员工的工资数据加上标题, 以使每一位员工拿到工资条 的时候都能够清晰地看到各项工资数据所代表的含义。 我们平常 的做法是在每个老师的记录所在行插入一行标题, 此种做法因为教工数量的增多时造成比较费时而且容易出错。因此, 我们可以在Excel的基础上,利用 VBA来实现自动编制工资条。为方便各位老师查询自己的具体工资情况, 建立“工资查询 表”工作表, 只要在查询窗口输

3、入员工编号, 就可以查询员工的 详细资料及各项工资数据。3 编程实现3.1 工资条的实现Sub 创建工资条 ()Dim i As Integer, row As Integer, col As IntegerSheets.Add after:=Sheets(" 工资表 ")ActiveSheet.Name = " 工资条 "' 在“工资表”的后面创建一个新的“工资条”工作表;Sheets(" 工资表 ").Activaterow = Sheets(" 工资表 ").A1.CurrentRegion.Rows

4、.Countcol = Sheets(" 工资表").A1.CurrentRegion.Columns.CountRange(Cells(1, 1), Cells(row, col).CopySheets(" 工资条 ").ActivateActiveSheet.PasteSelection.PasteSpecial Paste:=xlPasteColumnWidths, operation:=xlNone, skipblanks:=False, Transpose:=FalseFor i = 2 To row - 1Cells(i*2-1,1).Sel

5、ectSelection.EntireRow.InsertNext iRange("1:1").CopyFor i = 2 To row - 1Cells(i*2-1,1).SelectActiveSheet.PasteNext iApplication.CutCopyMode = FalseRange("A1").SelectEnd Sub3.2 工资查询窗口的实现 第一步:在同个工作簿中新创建一个名为“工资查询表”的 工作表,选择好一张合适的图片作为工作表背景,打开VBE窗 口界面, 在该窗口空白处单击鼠标右键, 插入并设计好一个名为“ UserFo

6、rmT”的用户窗体。Private Sub CommandButton1_Click()On Error GoTo errorid = TextBox1.TextSheets(" 基本资料表 ").ActivateSname = Application.WorksheetFunction.VLookup(id, Range("A1:F18"), 2, False)xueli = Application.WorksheetFunction.VLookup(id,Range("A1:F18"), 4, False)Sheets("

7、; 工资表 ").Activategw = Application.WorksheetFunction.VLookup(id, Range("A1:H18"), 4, False)zf = Application.WorksheetFunction.VLookup(id, Range("A1:H18"), 5, False)tax = Application.WorksheetFunction.VLookup(id, Range("A1:H18"), 6, False)bx = Application.WorksheetFu

8、nction.VLookup(id, Range("A1:H18"), 7, False)gjj = Application.WorksheetFunction.VLookup(id,Range("A1:H18"), 8, False)UserForm1.HideUserForm2.ShowExit Suberror:Sheets(" 工资查询表 ").ActivateMsgBox "对不起 ,不存在这个教工编号! "End Sub 第二步:设计显示查询窗口界面。 在工程资源管理器的窗口的任意位置单击鼠标右键, 插

9、入一 个 UserForm2 用户窗体, 并将标题修改为“显示查询结果”, 并添加一系列的“标签”、“文字框”按钮,具体见图2。在VBE窗口界面中双击“显示查询结果”用户窗体打开UserForm2 代码窗口,然后添加如下代码:Private Sub UserForm_Activate()Sheets(" 工资查询表 ").Activate lid.Value = id lname.Value = Sname subxueli' 调用该函数lgw.Value = " +" + Str(gw) + "元 "lzf.Value =

10、" +" + Str(zf) + "元 "ltax.Value = " -" + Str(tax) + "元"lbx.Value = " -" + Str(bx) + "元"lgjj.Value = "-" + Str(gjj) + "元 "money = 600 + mxueli + gw + zf - tax - bx - gjj lmoney.Value = Str(money) + "元 "End Sub S

11、ub subxueli() Select Case xueli Case " 专科以下 " mxueli = 0lxueli.Value = xueli + "无学历加成 "Case " 专科 "mxueli = 400lxueli.Value = xueli + " +" + Str(mxueli) + "Case " 本科 "mxueli = 800lxueli.Value = xueli + " +" + Str(mxueli) + "Case &q

12、uot; 硕士 "mxueli = 1200lxueli.Value = xueli + " +" + Str(mxueli) + "Case " 博士"mxueli = 1600元学历越lxueli.Value = xueli + " +" + Str(mxueli) + "' 此函数假设教师的基本工资与该员工的学历有关, 高其基本工资也越高。End SelectEnd SubPrivate Sub CommandButton1_Click()UserForm2.HideEnd SubPrivate Sub CommandButton2_Click() UserForm2.HideUserForm1.ShowEnd Sub4 结论 本模块的完成是在消化了由刘宇作者完成的编著 Excel 高 效办公 VBA入门与实战的基础上,结合

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论