一种VBA制作的EXCEL工资条解决方案
2021-04-11邓大治
魏 里,邓大治
(1.河南医学高等专科学校,河南 郑州 451191;2.河南工程学院,河南 郑州 451191)
1 概述
当今时代是信息大爆炸时代,谁掌握了信息谁就能预测与拥有未来。信息技术包含三大部分:一是通信技术;二是网络技术;三是计算机技术。其中计算机技术作为信息时代的关键技术,越来越发挥着关键作用。尤其在2018 年中华人民共和国教育部提出的教育信息化2.0 的背景下,教育信息化又再次得到大幅升级,全国各大中专院校积极响应教育部号召,加大计算机学科及计算机相关学科支持力度。计算机专业几乎成了我国每个大专中院校的标配,即便是非计算机专业,计算机应用与人工智能科目也成了一种必修课。计算机应用能力也成了用人单位对大学毕业生考查的一个重要技能选项。国家为了鼓励与检测当代大学生的计算机应用水平,特别组织了全国计算机等级考试(National Computer Rank Examination,简称NCRE),考试共有一、二、三、四4 种级别,每个级别又有不同考试选项。对于非计算机专业的学生来讲,选择计算机二级之MS OFFICE 高级应用的人数最多,MS OFFICE考查文字处理、电子表格、演示文稿的综合运用能力,虽然这三个组件很多考生早有接触,但是MS OFFICE 高级应用的通过率还是很低,全国的通过率在19%左右。而笔者所在的院校为专科院校,考生的通过率更低。本文就计算机二级之MS OFFICE高级应用中的难点:利用EXCEL制作工资条的问题进行总结与探讨。
2 VBA 简介
计算机有很多编程语言,比如说C 语言,C++语言,C# 语言,JAVA 语言,PYTHON 语言等,那么在OFFICE 中,书写宏(一串可以控制和操作Excel 的代码)代码的语言,我们称之为VBA 语言。从专业角度来说,VBA 就是Visual Basic For Application 的缩写,这种语言是微软公司开发的,镶嵌在OFFICE 中的一种应用程序开发工具。VBA 是为了扩展EXCEL 的功能而存在的,通过它可以实现人机交互、打造属于自己的管理系统,它可以帮助用户完成EXCEL 基础功能无法实现的任务。要想熟练使用代码来控制与操作EXCEL,必须要熟练掌握VBA 这门编程语言,将自己的意图通过VBA 来告诉EXCEL。VBA 对于非计算机专业的考生来说看似遥远,但是并不陌生,在EXCEL 中使用宏录制器录制的宏其实就是一个VBA 程序。既然宏就是VBA 程序,那么宏保存在哪里,就可以将VBA 程序写在哪里。调出【宏】对话框,在【宏名】列表中选中宏的名称,单击对话框中的【编辑】按钮,即可看到录制的宏代码。
3 工资条制作在计算机二级中的问题描述
在未来教育的计算机二级考试系统中新增题库第一套,就是一道关于工资条制作的问题,描述如下:
某家公司在每年的年终,都会按照惯例给员工发放年终奖金,公司的会计负责统计工资奖金的个人所得税的计算工作并为公司的每位员工制作一个工资条。要求考生按照题目的要求完成每位员工的奖金及个税的计算并为每位员工发送一个工资条。第一问题是要求考生在考生文件内把现有的EXCEL 素材文档另存为考生文件夹内,并更名为EXCEL;第二个问题是打开EXCEL 文件后在该文件中插入一个工作表并把该工作表移至文件的最左侧,把该工作表更名为“员工基础档案”,并把该工作表的标签更改为标准红色;第三个问题是把题目给出的“员工基础档案”CSV 文件导入到“员工基础档案”工作表中,从A1 单元格开始导入。其中第一列包含了“工号”与“姓名”信息,让考生把此列内容分成两列显示。把工资列的数据格式调整为会计专用,对所有行与列适当调整行高与列宽,最后创建一个名为“档案”的表,此表包含数据区域A1:N102,并把此表与外部的链接删除;第四个问题是在“员工基础档案”工作表中,利用公式与函数计算每个员工的性别与出生日期,并把出生日期更改为“XXXX 年XX 月XX 日”的格式,每位员工的截止年龄为2015 年9 月30 日,并计算每位员工的工龄工资,基本工资,其中年龄按周岁计算,满1年才记1 岁,1 年无论平闰年都按360 天算。工龄工资为满30 年的每年加50 元,满10 年不满30 年的每年加30 元,不满10 年的每年加20 元。第五个问题是参照“员工基础档案”表,在工作表“年终奖金”中输入工号对应的每个员工的姓名、部门、月基本工资,并按年工资的15%计算每个员工的年终奖。第六个问题是在“年终奖金”工作表中根据“个人所得税税率”工作表中的信息求出每个员工年终奖金的应缴所得税,其中计税方法是①年终奖的月税额为全部年终奖的十二分之一;②根据步骤①求出的月应税在“个人所得税税率表”中找出对应的税率;③其中年终奖奖金应交个税=全部年终奖金* 月应交所得额的对应税率-对应速算扣除数;④员工的实发奖金为应发奖金减去应缴个税。第七个问题是根据“年终奖金”工作表中的数据,在工作表“12 月工资表”中依次计算各个员工的“实发工资奖金”“奖金个税”“应发年终奖金”,其中实发工资奖金等于应发工资奖金合计减去扣除社保减去工资个税减去奖金个税。第八个问题是要重点探讨的问题,也是本文的写作目的。要求根据“12 月工资表”的数据,在“工资条”工作表中的A2 单元格为本公司的每一个员工生成一个工资条,其中工资条的样例已经给出,并且要求每个工资条占用两行,第一行为标题行,第二行是标题行对应的数据,两行内外都要加上边框。为了便于人事专员裁剪,每两个人的工资条之间都要加入一个空行,该空行的行高为40的单位,最后调整各个列的列宽到合适大小,字号大于等于10 磅。第九个问题是对工作表“工资条”的页面进行调整以方便打印,其中纸张方向为横向,并且使所有的页面只占一个页面宽度,水平居中打印在纸上。
4 利用VBA制作EXCEL工资条
首先利用EXCEL 中的宏对某个员工的工资条做单一完整操作。但是在默认情况下,【宏】命令在选项卡中是找不到的,因为在宏在【开发工具】选项卡中,而【开发工具】选项卡在默认情况下是不存在的。打开【开发工具】选项卡的方法如下:①打开【文件】选项卡;②选择【选项】命令;③打开自定义功能区;④勾选【开发工具】选项。经过这些操作之后,【开发工具】 选项卡就出现在选项卡栏中,然后在【开发工具】选项卡中找到【录制宏】,此时进入宏录制时刻,再完整的对某个员工操作一次工资条制作,操作完成后,点击停止录制,停止录制后在【宏】中找到刚才录制的宏,进行编辑,即在前两行增加两行代码(第一行:Dim i As Integer,第二行:For i=2 To Range("a1").CurrentRegion.Rows.Count)-1 与最后两行增加两行代码(倒数第二行:ActiveCell.Select,倒数第一行:Next)即可。这样,然后在【开发工具】中找到【宏】,然后在【宏】中找到已经编制好的程序,然后点击“执行”就会很快完成工资条的制作。
5 结论
计算机二级之MS OFFICE 高级应用是非计算专业学生选择最多的一个考试科目,此科目考查范围广,考试难度大,通过率一直不高。针对MS OFFICE 中的其中一个难点问题(工资条的制作),笔者比较多种操作方法,从办公自动化的角度提出了一种基于VBA 的工资条制作方法,借此希望给同行与学习者们一些建议。