摘要:本文通过利用Excel内嵌的VBA编程语言和Excel的宏功能相结合,实现了Excel下工资条的制作与工资查询窗口的建立。

关键词:VBA;宏;办公应用

中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)14-20888-03

1 引言

VBA是附属在Office办公软件包中的一套程序语言,主要用于自定义应用程序中的功能,以及加强应用程序之间的互动[1]。它继承了Basic的很多特性以及优点,加快了桌面软件设计的发展。使用VBA语言不仅能够减轻办公人员的工作负担,而且还可以使Execl的大量重复性操作变得简单快捷。

VBA具有如下两个特点[1]:

(1) 编辑器中提供有大量丰富的对象,在一个工作表中就可以很方便控制其它工作表、数据表和文档,从而实现不同工作表之间的数据交流。

(2) 编辑器提供有丰富的控件和完备的语言系统,用户可以根据需求编写VBA应用程序,从而创建一个功能完备的信息管理系统。

2 背景

高校教师工资管理表中一般包括教师编号、姓名、基本工资、职位岗位补贴、应扣税金、住房补贴和应扣保险等项目内容。我们假定每位教师的应发工资=基本工资+职位岗位补贴+住房补贴-应扣税金-应扣保险,我们在Excle中分别建立了教师基本资料表、工资表等。

工资条是发放工资时交给员工的工资项目清单,其数据来源于工资表,与工资表所不同的是:每个工资条都应该包含标题以及该员工所有工资数据的详细信息。编制工资条就是在工资表中为每一位员工的工资数据加上标题,以使每一位员工拿到工资条的时候都能够清晰地看到各项工资数据所代表的含义。我们平常的做法是在每个老师的记录所在行插入一行标题,此种做法因为教工数量的增多时造成比较费时而且容易出错。因此,我们可以在Excel的基础上,利用VBA来实现自动编制工资条。

为方便各位老师查询自己的具体工资情况,建立“工资查询表”工作表,只要在查询窗口输入员工编号,就可以查询员工的详细资料及各项工资数据。

3 编程实现

3.1 工资条的实现

打开[窗体]工具栏,单击[按钮]按钮,将鼠标指针移至“工资表中”,即可添加一个窗体按钮。此时系统会自动地弹出与该窗体按钮对应的[指定宏]对话框,然后在[宏名]文本框中输入“创建工资条”,单击[指定宏]对话框中的[新建(N)]按钮进入该按钮的代码编辑窗口,然后添加如下代码:

Sub 创建工资条()

Dim i As Integer, row As Integer, col As Integer

Sheets.Add after:=Sheets("工资表")

ActiveSheet.Name = "工资条"

'在“工资表”的后面创建一个新的“工资条”工作表;

Sheets("工资表").Activate

row = Sheets("工资表").[A1].CurrentRegion.Rows.Count

col = Sheets("工资表").[A1].CurrentRegion.Columns.Count

Range(Cells(1, 1), Cells(row, col)).Copy

Sheets("工资条").Activate

ActiveSheet.Paste

Selection.PasteSpecial Paste:=xlPasteColumnWidths, operation:=xlNone, skipblanks:=False, Transpose:=False

For i = 2 To row - 1

Cells(i*2-1,1).Select

Selection.EntireRow.Insert

Next i

Range("1:1").Copy

For i = 2 To row - 1

Cells(i*2-1,1).Select

ActiveSheet.Paste

Next i

Application.CutCopyMode = False

Range("A1").Select

End Sub

3.2 工资查询窗口的实现

第一步:在同个工作簿中新创建一个名为“工资查询表”的工作表,选择好一张合适的图片作为[工作表背景],打开VBE窗口界面,在该窗口空白处单击鼠标右键,插入并设计好一个名为“UserForm1”的用户窗体。

在用户窗体上双击“开始查询”命令按钮进入该按钮的代码编辑窗口,添加如下代码:

Private Sub CommandButton1_Click()

On Error GoTo error

id = TextBox1.Text

Sheets("基本资料表").Activate

Sname = Application.WorksheetFunction.VLookup(id, Range("A1:F18"), 2, False)

xueli = Application.WorksheetFunction.VLookup(id, Range("A1:F18"), 4, False)

Sheets("工资表").Activate

gw = 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.WorksheetFunction.VLookup(id, Range("A1:H18"), 7, False)

gjj = Application.WorksheetFunction.VLookup(id, Range("A1:H18"), 8, False)

UserForm1.Hide

UserForm2.Show

Exit Sub

error:

Sheets("工资查询表").Activate

MsgBox "对不起,不存在这个教工编号!"

End Sub

第二步:设计显示查询窗口界面。

在工程资源管理器的窗口的任意位置单击鼠标右键,插入一个UserForm2用户窗体,并将标题修改为“显示查询结果”,并添加一系列的“标签”、“文字框”按钮,具体见图2。

在VBE窗口界面中双击“显示查询结果”用户窗体打开UserForm2代码窗口,然后添加如下代码:

Private Sub UserForm_Activate()

Sheets("工资查询表").Activate

lid.Value = id

lname.Value = Sname

subxueli

'调用该函数

lgw.Value = " +" + Str(gw) + "元"

lzf.Value = " +" + 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

Sub subxueli()

Select Case xueli

Case "专科以下"

mxueli = 0

lxueli.Value = xueli + " 无学历加成"

Case "专科"

mxueli = 400

lxueli.Value = xueli + " +" + Str(mxueli) + "元"

Case "本科"

mxueli = 800

lxueli.Value = xueli + " +" + Str(mxueli) + "元"

Case "硕士"

mxueli = 1200

lxueli.Value = xueli + " +" + Str(mxueli) + "元"

Case "博士"

mxueli = 1600

lxueli.Value = xueli + " +" + Str(mxueli) + "元"

'此函数假设教师的基本工资与该员工的学历有关,学历越高其基本工资也越高。

End Select

End Sub

Private Sub CommandButton1_Click()

UserForm2.Hide

End Sub

Private Sub CommandButton2_Click()

UserForm2.Hide

UserForm1.Show

End Sub

4 结论

本模块的完成是在消化了由刘宇作者完成的编著《Excel高效办公――VBA入门与实战》的基础上,结合本单位的实际情况开发而成,在此表示感谢!作为非常流行的应用程序开发语言Visual Basic的子集,VBA具有VB语言的大多数特征和易用性,并可以将Excel作为开发平台来开发应用程序,可以应用Excel的所有功能,例如其数据处理、数据库连接、内置函数,等等,从而降低编程难度,加快了开发速度。对于我们来说,我们完全可以通过VBA来编制各类专业应用,以提高日常工作的效率。

参考文献:

[1] 刘宇. Excel高效办公――VBA入门与实战[M]. 北京:人民邮电出版社,2006.

[2] 马维峰. Excel VBA应用开发从基础到实践[M]. 北京:电子工业出版社,2007.1-30.

[3] 白金牛,王培吉. 利用VBA实现Excel的分页汇总统计[J]. 2004,(8):55-56.

[4] 何兵,侯涛. 基于VBA的Excel下教师教学工作量统计模板开发[J]. 2006,(2):23-26.

[5] 李桂英. 基于XML和VBA的《计算机应用基础》在线考试系统[J]. 2005,(219):25-28.

注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文

计算机应用基础员工工资表,利用VBA编写Excel中的工资条与工资查询窗口相关推荐

  1. 利用VBA将excel中链接转换为图片形式存放在指定的单元格中

    利用VBA将excel中链接转换为图片形式存放在指定的单元格中 VBA代码如下 Private Declare Function URLDownloadToFile Lib "urlmon& ...

  2. 日常使用------利用VbA对Excel中的多个sheet工作表排序

    在excel工作簿中对有多个工作表,由于个人需要,对每个工作表中某一值的比较大小后,然后进行排序. 由于vba中字典对应值比较难以排序,所以就分为两步 第一步是提取工作表名和对应字段写到工作表中: S ...

  3. 利用VBA在Excel中批量画图

    有很多图要画的时候要崩溃的,必须上VBA来解决.比如现在有个Excel数据表,研究五个竞争对手,每个竞争对手都生产有四种设备,每个设备都有可能具有8个效果中的几个.现在要研究五个竞争对手的专利情况.要 ...

  4. 利用VBA在excel中批量添加备注

    excel表中有4列数据,给第4列添加批注,批注的内容为第4列的数据,如何批量添加呢? 按Alt+f11打开VBA编辑器,加入以下代码 Sub 添加批注() Dim t As String For i ...

  5. 计算机基础与应用第三版教案,计算机应用基础教案第三讲:系统与编码(中职教育)...

    计算机应用基础教案第三讲:系统与编码(中职教育) (4页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 计算机应用基础教案第三讲:系统与编码课 ...

  6. 计算机基础及应用教案,计算机应用基础教案:数制的概念及转换(中职教育)

    计算机应用基础教案:数制的概念及转换(中职教育) (6页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 课题:数制的概念及转换教学目标:1.了 ...

  7. 计算机应用基础主要按键,计算机应用基础教案第一讲:键盘与鼠标(中职教育)...

    计算机应用基础教案第一讲:键盘与鼠标(中职教育) (5页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 计算机应用基础教案第一讲:键盘与鼠标课 ...

  8. python excel绘图-利用python在excel中画图的实现方法

    一.前言 以前大学时候,学EXCEL看到N多大神利用excel画图,觉得很不可思议.今个学了一个来月python,膨胀了就想用excel画图.当然,其实用画图这个词不甚严谨,实际上是利用opencv遍 ...

  9. 如何编写列名中带有空格的SQL查询

    在这篇文章中,我们将学习如何写出列名中带有空格的SQL查询.空格在数据库对象的名称和表的列名的命名规则中受到限制.如果你想在对象名或列名中加入空格,查询和应用代码必须以不同的方式编写.在编写动态SQL ...

  10. VBA在Excel中的应用(一):改变符合条件单元格的背景颜色

    Jiahua Jin VBA在Excel中的应用(一):改变符合条件单元格的背景颜色 在使用excel处理数据的时候,为了能更清晰的标示出满足特定条件的单元格,对单元格添加背景色是不错的选择.手工处理 ...

最新文章

  1. 深度学习常见问题解析
  2. 《OpenCV3编程入门》学习笔记6 图像处理(七)阈值化
  3. 关于final局部变量引用的研究
  4. k86跟mysql_MySQL【基础架构】
  5. SCRIPT70: 没有权限
  6. 漫画:什么是一致性哈希
  7. oracle 最小权限,oracle低权限下获取shell
  8. 推荐系统实战第一部分 协同过滤
  9. Ubuntu-20.04开机黒屏出现“dev/sda ... clean ... blocks”的信息
  10. Java 高级工程师面试题总结-参考答案(已拿Offer)
  11. 设计Instagram
  12. 使用SAS实现单因素方差分析
  13. ABAP学习笔记-基础语法-06-流程控制(01)-条件语句
  14. 基于PeopleSoft的EHR系统建设路线及其团队建设
  15. 开通微信小店显示:系统繁忙,请稍后再试怎么回事?如何解决?
  16. 时间序列之holt-winters(三次指数平滑)
  17. linux嵌入式红绿灯,嵌入式上机课设(红绿灯)..doc
  18. 将m4s文件转为mp4
  19. Windows10编译CPU版OpenPose
  20. 浪潮服务器系统raid5,浪潮服务器RAID配置及系统引导.doc

热门文章

  1. Could not connect to any servers in your MongoDB Atlas cluster. One common reason is that you‘re try
  2. 将java对象转换成json字符串_将java对象转换成json字符串
  3. 斗鱼 Juno 监控中心的设计与实现
  4. chrome 历史版本和chrome webDriver历史版本
  5. 第四届全国大学生GIS应用技能大赛开发题答案(非官方)
  6. python爬虫案例-爬取西刺免费代理服务器IP等信息
  7. 物联网感知-基于分布式光纤传感的石油石化管道综合监测
  8. 线上展示3D可视化电子沙盘管理系统
  9. svn分支和主干的同步操作
  10. 金融机构如何应对核心系统分布式智能化升级大潮?