标题 | 浅谈VBA在EXCEL中的应用 |
范文 | 武珍珍 摘要:在本文中主要介绍了用使用Excel VBA程序设计语言操作者在使用Excel处理成批的重复的数据时,如何自动插入相同的数据,从而节省操作时间,避免重复工作,提高工作效率。 关键词:VBAExcel数据库宏 VBA(Visual Basic for Application) 是Basic编程语言中较为流行的一种语言,它继承了Basic的许多特性和优点,简单易用,更方便了桌面软件设计用户开发程序。在使用Excel处理数据时,虽然其为用户提供了强大的电子表格功能,但计算机毕竟只是一种帮助人类进行数据处理的工具而已,有许多日常的琐碎的工作需要操作者自己来完成,而在很多情况下,这些工作有大部分是重复的。这时最好的办法就是使用Excel中的VBA编辑器。它可以把大量的、重复的操作记录为一个VBA程序,从而实现复杂、重复的操作自动化,它还可以通过控制Excel对象,在一个工作表中灵活地控制其他的工作表、数据表或文档,从而实现不同工作表数据之间的交互,另一方面,利用VBA编程器中提供的丰富的控件设置,用户可以创建自己的信息系统。 用户在开发应用系统时,很多程序代码都可以通过录制宏来获得,而不需要自己费尽心力去编写代码。程序编写者所要做的工作就是通过录制宏得到相关的代码,然后在此基础上进行加工,就可以得到全部的程序代码或是程序中可以调用的子程序。 除了增强特定的记录宏外,用户可以使用VBA连接、组排,或控制几个宏来完成由几项小任务组成的一项综合性任务。例如在实际的财会工作中可能需要从数据库程序中提取数据再输入一Excel工作表中,将数据格式化,生成图表或表格,并打印出图表或特定格式的报表。要把这些独立的操作能过一个宏完成,程序设计人员需要为每一个操作录制一个宏,分别用来输入数据,格式化,创建表格或图表,然后打印数据。当这些宏录制完成以后,用VBA编写一个宏,把这些宏合理的组织起来,并使它们以正确的顺序执行。 本文以财会工作中的制作工资条为例来说明如何使用VBA来实现复杂的、重复的操作,提高工作效率。现在一些企业的财会人员常常需要用Excel打印本单位的职工工资总表与工资条,但在Excel中要将工资总表(表1)手工地转换为工资条(表2)则是一件比较烦琐的事,需要做许多重复的操作。下面就以我院潍坊科技学院的工资条为例,编写的一个Excel宏,运行这个宏就可将编辑好了的工资总表方便快速地转换为每个员工的工资条打印输出。 下面对代码进行说明: 在Excel中新建一个文件,将其命名为“工资表”,在工作表“工资总表”中输入本公司职工工资总表(如表1)后,点击“工具”菜单→“宏”→“宏…”→输入宏名“生成工资条”→创建,输入如下的宏,输入完成后保存该宏。 将工作表“工资总表”中的工资总表复制到另一个工作表“工资条”中,并使“工资条”成为当前工作表,执行刚才创建的宏,即可很快将表1所示的工资表转换为表2所示的工资条。 宏的内容如下: Sub 生成工资条() Cells.Select '选择整个表去掉表格线 Range("F1").Activate 当前活动单元格 Selection.Borders(xlDiagonalDown).Line Style = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone Selection.Borders(xlEdgeLeft).LineStyle = xlNone Selection.Borders(xlEdgeTop).LineStyle = xlNone Selection.Borders(xlEdgeBottom).LineStyle = xlNone Selection.Borders(xlEdgeRight).LineStyle = xlNone Selection.Borders(xlInsideVertical).LineStyle = xlNone Selection.Borders(xlInsideHorizontal).LineStyle = xlNone Rows("2:2").Select '选择第2行 Selection.Insert Shift:=xlDown '在第2行前插入一行,保持第2行 为选中状态 num=150 '总人数×3,如工资表中有200人则 为200×3即num=600 col=22 '工资表的栏数,如工资表有17栏则 'col=17 num1 = 4 Do While num1 <= num '循环插入空行 Range(Cells(num1, 1), Cells(num1, col)).Select '选中第num1行的第1列到第col列 Selection.Insert Shift:=xlDown Selection.Insert Shift:=xlDown num1 = num1 + 3 Loop Range(Cells(1, 1), Cells(1, col)).Select Application.CutCopyMode = False '剪切复制模式无效 Selection.Copy '复制选择区域 Range("A2").Select '选择A2单元格 ActiveSheet.Paste '从A2单元格起粘贴内容 num2 = 5 Do While num2 <= num '循环插入工资表的标题行,为每个人的工资添加标题 Range(Cells(1, 1), Cells(1, col)).Select Application.CutCopyMode = False Selection.Copy Cells(num2, 1).Select ActiveSheet.Paste num2 = num2 + 3 Loop Range(Cells(2, 1), Cells(3, col)).Select Application.CutCopyMode = False Selection.Borders(xlDiagonalDown).LineStyle = xlNone '定义表格边框线、内线样式 Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft) .LineStyle = xlDouble .Weight = xlThick .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeTop) .LineStyle = xlDouble .Weight = xlThick .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlDouble .Weight = xlThick .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeRight) .LineStyle = xlDouble .Weight = xlThick .ColorIndex = xlAutomatic End With With Selection.Borders(xlInsideVertical) .LineStyle = xlDash .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlInsideHorizontal) .LineStyle = xlDash .Weight = xlThin .ColorIndex = xlAutomatic End With Selection.Copy Range(Cells(5, 1), Cells(6, col)).Select Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= False, Transpose:=False '接上行删除上行尾的连字符_,复制表格线样式 num3 = 8 Do While num3 <= num '循环复制表格线样式 Range(Cells(num3, 1), Cells(num3 + 1, col)).Select Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= False, Transpose:=False num3 = num3 + 3 Loop Rows("1:1").Select '删除多余的一行 Selection.Delete End Sub 以后财会人员每月要打印工资总表与工资条时,只需将“工资表与工资条”文件打开,修改好工作表“工资总表”中的当月的工资总表数据后将其复制为工作表“工资条”,并使“工资条”成为当前工作表,执行宏“生成工资条”即可。这样就可以一劳永逸了,再也不用为每月都做相同的工作而伤脑筋了。 这只是VBA应用中的一角,读者可以学习相关的Excel VBA知识和使用方法,将其技巧融合在实际应用中,减轻每一个常使用Excel来处理大量数据的操作人员的工作负担,提高工作效率。◆ 参考文献: 《Excel2007VBA从入门到精通》宋翔等编著 机械工业出版社 《Excel公式、函数、图表、VBA一本通》 黄海 编著 中国青年出版社 |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。