别怕,Excel VBA其实很简单

978-7-115-28909-4
作者: Excel Home
译者:
编辑: 马雪伶

图书目录:

详情

本书主要内容包括开始VBA 编程的第一步、Excel VBA 基础语法、常用对象、Excel事件、用户界面设计、代码调试与优化等内容。

图书摘要

别怕,Excel VBA其实很简单
Excel Home 编著
人民邮电出版社

北京

图书在版编目(CIP)数据

别怕,Excel VBA其实很简单/Excel之家编著.--北京:人民邮电出版社,2012.10

ISBN 978-7-115-28909-4

Ⅰ.①别… Ⅱ.①E… Ⅲ.①表处理软件 Ⅳ.①TP391.13

中国版本图书馆CIP数据核字(2012)第149668号

内容提要

本书考虑到大多数读者没有编程基础的实际情况,用浅显易懂的语言和生动形象的比喻,并配合大量插画,介绍Excel中看似复杂的概念和代码、从简单的宏录制、VBA编程环境和基础语法的介绍,到常用对象的操作与控制、Excel事件的调用与控制、用户界面设计、代码调试与优化、都进行了形象的介绍。

本书适合想提高工作效率的办公人员,特别是经常需要处理、分析大量数据的相关人员,以及财经专业的高校师生阅读。

别怕,Excel VBA其实很简单

♦编著 Excel Home

责任编辑 马雪伶

♦人民邮电出版社出版发行  北京市崇文区夕照寺街14号

邮编 100061  电子邮件 315@ptpress.com.cn

网址 http://www.ptpress.com.cn

北京天宇星印刷厂印刷

♦开本:787×1092 1/16

印张:20.75

字数:445千字  2012年10月第1版

印数:1–5000册  2012年10月北京第1次印刷

ISBN 978-7-115-28909-4

定价:49.00元

读者服务热线:(010)67132692 印装质量热线:(010)67129223

反盗版热线:(010)67171154

广告经营许可证:京崇工商广字第0021号

VBA,让效率飞起来

当加班成为常态,改变在所难免

十年前的我,加班是家常便饭的事,每天成堆的工作总是压得我喘不过气来,我和同事们就像一枚枚棋子,蜷缩在办公室里,在电脑前紧张地忙碌着,不知目睹了多少个华灯初上到灯火阑珊的夜晚。

2000年8月的一天我的目标是完成生产成本核算系统的最后一个报表模块的开发。有了它,就可以方便地查询和计算每一种产成品在任意一个工序上的成本明细项目,还可以在不同月份之间进行结转、对比。

我喜欢在晚上写程序,因为晚上安静,能让我的思路飞扬,让代码随着键盘声快速地推进,等待大功告成的那一刻出现。

你不会以为我是程序员吧?

不,事实上,我是财务部的成本主管。我就职于一家制造型企业,有IT部门,但是没有程序员。说白了,我就是千百万个成天和Excel表格“耳鬓厮磨”的一员。

我们公司的产品有几十种,涉及的材料有几千种,每个产品又有N道工序,每道工序由数量不等的作业人员进行生产。我的工作,就是计算和分析所有产成品和半成品的生产成本,包括材料、人工和杂费。计算依据主要包括生产部门提交的各产品工序的工时记录表,仓库提交的材料进销数据,HR部门提供的工资单明细。

这样的计算任务并不轻松,计算目标复杂,原始数据繁多,有些甚至不是电子文档,而且只有我一个人。再而且,时间非常紧张,因为每个月交报表的时间是固定的。

也许你想问,这么复杂的计算用Excel?你们公司难道没有ERP吗?

有的,而且声名不小,价格不菲。但在我看来,公司的ERP虽有一定的作用,不过却存在很多局限性,局部线条偏粗,又有些笨拙,很难给出我需要的结果。

所以,我必须借助Excel。

回想中学时的《政治》课本上说,资本家为了榨取更多的剩余价值,有两种方法:一是延长工作时间,二是提高生产效率。我现在清楚地认识到,为了及时准确地完成计算任务,方法同样有两个:加班,或者提高计算效率。

我当然不愿意加班。同时,加班的产出也是有限的,并不能解决任务重时间紧的根本性问题。

所以,我必须提高效率。

一次自动核算成本系统的开发经历,让我受益无穷

自从接了公司的生产成本核算系统这个活,我的Excel水平突飞猛进。从最初的焦头烂额,到现在的从容应对,我通过不断优化计算方法,完善成本核算模板,减轻工作量。

有人说,学好Excel可以以一当十。年轻的我凭着一腔热情,还真没有注意到:公司的产品规模在不断扩大,计算任务随之加重,我依然可以按时交报表。由于我舍得下力气去研究,直到后来协助工作的同事被上司调派去负责别的内容。

我的想法很简单,多做就是多学习,付出一定有回报。

我的成本核算模板,按产品区分,主要使用的是Excel的函数、公式和数据透视表,可以实现成本计算的半自动化——输入原始数据,结果自动生成。原始数据,一部分来源于上个月的成本数据,一部分从ERP中导出。

模板完善后,我的工作重心不再是计算,而是处理这样那样的原始数据。这是一件相当繁琐无聊的事情。导出、保存、打开、复制、粘贴、切换、关闭,奈何我200APM[1]的手速,因为涉及几百个文件的数据处理,至少得一两天时间,处理过程中还很容易出错。

问题是,公司的产品数量一直在增加,并处于变化中,这让我再次想起了“水管工的故事”。

于是,我决定继续挖掘Excel的潜力,其实也是我自身的潜力。两个月以后,我用Excel VBA代码替代了80%的成本原始数据处理工作。只要按一次键,数据就能乖乖地按规定的路线在几百个Excel文件之间流转,就像欢乐的浪花在美丽的小河中荡漾。

说真的,没有什么事情,比看着自己写的代码正常运行,让复杂无比的工作灰飞烟灭的感觉更有成就感了。

了解到Excel VBA与众不同的威力后,我的激情再一次被点燃,我决定要自己写一个成本计算分析系统,我希望以后每个月的成本计算分析都是全自动的。

经过持续不断地学习和研究,我想,今天晚上,终于可以达成了这一目标了。

透视VBA的知与行

转眼间迈入2012年了。

我们都生活在信息社会中,生活在一个前所未见的充斥着海量数据的年代。无论是企业还是个人,每天都要接触无数以数据为载体的信息。

数据,甚至已经成为了企业或个人的替代品。

不相信?

一家你未曾亲身到访甚至未曾接触过其产品的企业,对你来说意味着什么?它无非会成为财务报表或统计报表上的一堆林林总总的数据,诸如生产规模、员工人数、利润水平……

一个你未曾谋面未曾听说的人,对你来说意味着什么?就好像进入婚恋网站搜索对象,这些陌生人只不过是个人指标数据的集合体,诸如身高、体重、职业、收入……

想要在这样一个时代生存,处理数据的能力是必须的,因为实在有太多数据要处理了。广大Excel的用户,尤其是Excel的重度用户肯定对此深有体会。

作为Excel Home的站长和一名培训讲师,我接触过许多各式各样的数据处理要求,也体验或亲身参与过许多基于Excel的解决方案。这些宝贵经验让我对Excel提供的各项功能有更深的理解。

在Excel中制作计算模型,主力军非函数与公式莫属。300多个不同功能的函数在公式中灵活组合,可以创造无数种算法,再加上数组和名称的配合使用,几乎可以完成绝大多数计算任务。

要论数据分析和报表生成的便捷,不得不提到数据透视表,这是Excel最厉害的本领,厉害在于其功能强大的同时,使用起来却非常简单。

但如果只会这两样,仍然会有很多时候感到束手束脚,究其根本在于以下几方面。

1.函数和公式只能在其所在的位置返回结果,而无法操作数据表格的任意位置,更不能操作表格的任意属性(比如设置单元格的填充色,或删除单元格)。

2.函数和公式、数据透视表都需要规范的数据源,但往往我们工作量最大之处就在于获取和整理原始数据。比较麻烦的情况之一就是原始数据很可能是位于某个文件夹下的几十份表格。

3.使用函数和公式、数据透视表制作的解决方案,难以具备良好的交互性能。因为它们只能存在于单元格中,与普通数据是处于同一个平面的。

4.对于业务流程较为复杂、数据项经常变化的计算很难处理。

5.无法迅速省力地完成大量的重复操作。

所以,永远不要忘记Excel还有一个杀手级的功能——VBA。

VBA是什么,怎么用,在本书中会给出详细的答案。这里,我只想说,只有这个功能才真正让Excel成为了无所不能的数据处理利器,才让我们有机会可以彻底地高效办公。

很多人认为VBA很神秘,认为会写代码是自己不可能实现的事情。虽然我不能保证人人都能学会VBA,但我可以保证如果你能学会函数和公式,你也能学会VBA,因为它们的本质是相同的。函数和公式无非是写在单元格中的一种简短代码罢了。

所以,如果你曾经觉得自己连Excel函数和公式也搞不定,现在却能熟练地一口气写下好几个函数嵌套的公式,那么你学VBA不会有问题。

在我眼里,VBA就好像“独孤九剑”。这武功最大的特点是遇强则强,遇弱则弱。如果你每天面对的数据非常有限,计算要求也很简单,那么用VBA就是高射炮打蚊子了。但如果你是Excel重度用户,经常需要处理大量数据,而Excel现有功能无法高效完成计算任务时,就可以考虑让VBA上场,一举定乾坤。

今时不同往日,互联网的发展使得技术和经验的分享非常方便。如果说十年前你想用VBA实现任何一个小功能都需要先掌握全部语法,然后一行一行代码自己写的话,那么现在Excel Home上有太多太多现成的实现不同目标的VBA代码,许多代码甚至已经到了拿来即用的程度。

所以,如果你的时间非常有限,也没有兴趣成为一个Excel开发者,你只需要快速地学习掌握Excel VBA的基本语法,然后到互联网上去淘代码来用到自己的工作中。如果你投入的时间多一点点,你会发现你很快就能看懂别人的代码,然后做出简单的修改后为自己所用。这个过程,是不是和你当年学Excel函数和公式的经历很类似?

等你做到这一步,你会发现原来公司里那个很厉害的会写代码的Excel高手的秘密武器原来是这样的啊,以后可以少请他吃饭以换取他为你写个小功能了……

因为工作的关系,我接触过很多信息化工具,也了解过一些编程语言,我发现所有工具的本质是相通的。每种工具都有其优缺点,有其专属的场合。这种专属并非指不可替代,而是说最佳选择。

因此,我不赞成VBA至上的观点,因为尽管VBA无所不能,但如果我们事事都写代码,那还要Excel本身的功能干嘛?我也反对VBA无用的观点,你暂时用不上怎么能说明此工具无用?甚至说,你根本就不会用这工具,怎么知道你用不上?

用VBA,是为了更高效。不用,也是因为同样的目的。

但是,会了VBA,你将拥有高效的更多种选择。不会,你就没有。这一点,高效人士都懂的。

Excel Home创始人、站长 周庆麟

2012年2月22日

[1].APM,指每分钟击键次数。

前言

本书以培养学习兴趣为主要目的,遵循实用为主的原则,深入浅出地介绍Excel VBA的基础知识。书中摒弃了枯燥乏味的科技说明文风格,避开难学少用的粗枝繁叶,利用生动形象的比拟和浅显易懂的语言去描述Excel VBA中看似复杂的概念和代码,借用实用的例子来了解编程的思路和技巧,为读者提供练习和思考的空间,讲练结合,让读者亲自体验VBA编程的乐趣及方法。

本书配套示例文件和视频教程,请到Excel Home网站(http://www.excelhome.net)获取。

阅读对象

如果你是使用Excel的工作人员,长期以来被无穷的数据折磨得头昏脑胀,希望通过学习VBA找到高效的解决方法;如果你是在校大中专院校学生,有兴趣学习Excel VBA,为今后的职业生涯先锻造一把利剑;如果长期以来你一直想学VBA,却始终入门无路,那都是本书最佳的阅读对象。

当然,在阅读本书之前,你得对Windows操作系统和Excel有一定的了解。

写作环境

VBA虽然依附于Office软件,但它本身是一门独立的编程语言,因此,VBA在不同版本Office中的用法几乎没有差异。

为照顾多数Excel 2003用户的使用习惯,本书以Windows XP和Excel 2003为写作环境。但使用Excel 2007和Excel 2010的用户不必担心,因为书中涉及的知识点,绝大多数在Excel 2007和Excel 2010中同样适用。

后续服务

在本书的编写过程中,尽管作者始终尽心尽力,但仍无法避免存在不足之处。如果你在阅读过程中有任何意见或建议,敬请反馈给我们,我们将根据你宝贵的意见或建议进行改进,继续努力,争取做得更好。如果你在学习过程中遇到困难或疑惑,也可以和我们交流。

你可以通过以下任意一种方式和我们互动:

1.访问http://club.excelhome.net,通过论坛和我们进行交流;

2.访问http://t.excelhome.net,参加ExcelHome免费培训班;

3.如果你是微博控,可以关注我们的微博:http://weibo.com/iexcelhome(新浪),http://t.qq.com/excel_home(腾讯)。那里会向你推荐很多优秀的学习资源,向你介绍很多适用的Excel技巧。

致谢

本书由周庆麟策划及统稿,由罗国发进行编写。感谢美编马佳妮完成了全书的精彩插画,这些有趣的插画让本书距离“趣味学习,轻松理解”的目标更进了一步。

Excel Home论坛管理团队和Excel Home免费在线培训中心教管团队长期以来都是Excel Home图书的坚实后盾,他们是Excel Home中最可爱的人。最为广大会员所熟知的代表人物有朱尔轩、林树珊、刘晓月、吴晓平、方骥、杨彬、朱明、郗金甲、黄成武、孙继红、王建民、周元平、陈军、顾斌等,在此向这些最可爱的人表示由衷的感谢。在本书正式出版前,有幸邀请到多位Excel Home会员进行志愿预读,他们以高超的技术和无比的细心,帮助我们对书稿做出了进一步的完善。本次预读活动由吴晓平和赵文妍负责,团队成员为(排名不分先后)陈智勇、刘冠、潘新水、曲天非、邵武、向绪霞、许春富、燕铁艳、叶兆锋、张建元和张敏。在此,特向预读团队表示最真诚的感谢!

衷心感谢Excel Home的百万会员,是他们多年来不断的支持与分享,才营造出热火朝天的学习氛围,并成就了今天的Excel Home系列图书。

Excel Home简介

Excel Home(http://www.excelhome.net)是微软在线社区联盟成员,是一个主要从事研究、推广以Excel 为代表的Microsoft Office软件应用技术的非营利性网站。自1999年由Kevin Zhou(周庆麟)创建以来,目前已成长为全球最具影响力的华语Excel资源网站之一,拥有大量原创技术文章、视频教程、Addins加载宏及模板。

Excel Home社区是一个颇具学习氛围的技术交流社区。截止到2012 年8 月,注册会员人数逾200 万,同时也产生了26 位Office方面的MVP(微软全球最有价值专家),中国大陆地区的Office MVP 被授衔者大部分来自本社区。现在,社区的版主团队包括数十位祖国大陆及港澳台地区的Office 技术专家,他们都身处各行各业,并身怀绝技!在他们的引领之下,越来越多的人取得了技术上的进步与应用水平的提高,越来越多的先进管理思想转化为解决方案并被部署。

Excel Home是Office 技术应用与学习的先锋,通过积极举办各种技术交流活动,开办完全免费的在线学习班,创造了与众不同的社区魅力并持续鼓励技术的创新与进步。网站上的优秀文章在微软(中国)官网上同步刊登,让技术分享更加便捷。另一方面,原创图书的出版加速了技术成果的传播共享,从2007年至今,Excel Home已累计出版Office技术类图书数十本,在Office 学习者中赢得了良好的口碑。

Excel Home 专注于Office 学习应用智能平台的建设,旨在为个人及各行业提升办公效率、将行业知识转化为生产力,进而实现个人的知识拓展及企业的价值创造。无论是在校学生、普通职员还是企业高管,在这里都能找到您所需要的。创造价值,这正是Excel Home 的目标之所在。

Let′s do it better!

第1章 走进Excel VBA的世界

VBA就像一座神秘的城堡,对很多人来说都是神秘的。很多人想走进VBA的世界,却始终找不到打开大门的钥匙。

什么是VBA?

怎样学习VBA?

面对这些问题,让我们从身边开始,一起探索,一起解答。

1.1 不会Excel的人,真伤不起

1.1.1 做不完的表

数据采集、数据处理、数据分析……这是小张每天都在做的工作。老板的需求和基础数据一样每天都在改变,而小张做表的速度却永远也跟不上老板敏捷的思维。

不同的数据,相同的操作。小张感叹:“和数据打交道的日子,真烦!”

单位来了新同事,接手小张平时的工作。

1.1.2 神速的“超人”

终于告别上万条的数据,离开乱七八糟的报表,脱离“苦海”的日子,小张的日子要多舒心有多舒心。可是……

电话里,老板那可以撑爆整幢大楼的赞扬声和新同事腼腆的笑容,让小张心里很不是滋味:“一个小时和一星期,中间的差距不仅只是时间。不会Excel的人,真伤不起!”

1.1.3 你是怎样做工资条的

小张决定向新同事取取经……

同事打开一张工资表,如图1-1所示,让小张把它做成工资条,如图1-2所示。

小张熟练地拿起鼠标,选中工资表头所在行→复制→选中第二条工资记录所在行→单击右键→插入复制单元格。

完成后,又按同样的操作进行第三条,第四条……

新同事看完后,笑了:“如果是1000条记录的工资表,这样做需要多久?”

小张苦笑,也只能苦笑。

工作的内容不少,但都是重复的操作。而这种重复不但枯燥而且费时,尽管小张天天时时刻刻都在做表,却永远也跟不上老板的节奏。

1.2 走自己的“录”,让别人重复去吧

新同事的建议让小张感到很茫然。

面对小张满脑子的疑问,新同事耐心地给他解释,并示范操作过程……

1.2.1 什么是宏

就像用摄像机录下来的视频,在Excel里,宏就是Excel用户使用宏录制器录下的一组操作。

选中工资表头所在行→复制→选中工资记录所在行→单击右键→插入复制单元格,这是小张制作工资条时重复的操作。

1.2.2 用宏录下Excel操作

录制宏前需要进行一些简单的设置,如图1-3所示。

完成上述设置后就可以录制宏了,如图1-4所示。

这样,宏就录制好了。

1.2.3 让录下的操作再现一遍

录制完成后,通过下面的方法运行宏,如图1-5所示。

如果要继续插入新的工资表头,就继续执行宏。

练习小课堂

学会使用录制和执行宏代替手工完成重复操作后,小张很高兴。他发现工作中很多问题都可以借助宏来提高工作效率。

可是,他不明白相对引用和绝对引用的区别,你能分别录制不同的宏,执行它们,找到它们之间的区别吗?

参考答案

绝对引用:如果使用绝对引用,在执行宏的过程中,无论选中了哪个单元格,宏都在特定的单元格中执行录制的操作。

相对引用:如果使用相对引用,在执行宏的过程中,将以活动单元格为A1单元格,宏在相对于活动单元格的特定单元格中执行录制的操作。如果你想让录制的宏可以在任意区域中使用,就使用相对引用。

1.3 还可以怎样执行宏

【宏】对话框里的“执行”按钮就是运行宏的开关。不够方便,不够快捷,是这个开关的缺点。如果你不喜欢这个开关,可以选择其他执行宏的方法。

1.3.1 给宏设置快捷键

录制宏前,可以在【录制新宏】对话框里为宏设置快捷键,如图1-6所示。

也可以在录制宏后进行设置,如图1-7所示。

给宏设置快捷键后,就可以按下相应的组合键执行宏。

注意:因为给宏指定的快捷键会覆盖Excel默认的快捷键。例如:把<Ctrl+C>指定给某个宏,那在Excel中按下<Ctrl+C>组合键将不再执行复制操作。

1.3.2 将宏指定给按钮

不便记忆,不易上手。快捷键虽快却不实用。

无论出于什么目的,都应尽量让设计的表格显得直观一些。

拿过电视机的遥控板,扫一眼就知道该按下哪个按钮来加减声音,按下哪个按钮来调节频道。

如果你担心忘记为宏设置的快捷键,可以绘制一块直观形象的“遥控板”,通过单击按钮来执行宏。图1-8所示为将宏指定给按钮的方法。

如果是已经添加的按钮,可以用鼠标右键单击它,在右键菜单中执行【指定宏】菜单命令打开【指定宏】对话框,再将宏指定给按钮,如图1-9所示。

当按钮呈编辑状态(如果不是编辑状态,可以先用鼠标右键单击它)时,单击按钮表面,更改标签为“生成工资条”,调整按钮的大小和位置,完成后单击按钮外的任意区域退出对按钮的编辑,如图1-10所示。

完成上述设置后即可单击按钮执行宏,如图1-11所示。

还可以用同样的方法将宏指定给图片或自选图形等。

1.3.3 将宏指定给常用工具栏按钮

将宏指定给常用工具栏按钮的操作步骤如图1-12所示。

还可以在右键菜单中对按钮进行其他的设置,如更改按钮的名称、图像等,如图1-13所示。

完成后关闭【自定义】对话框,就可以单击自定义的按钮执行宏了。

1.4 是谁“挡住”了宏

1.4.1 宏为什么不能工作了

有时,打开一个保存有宏的工作簿或试图执行一个宏时,Excel会显示如图1-14所示的对话框,而并不执行宏。

这是小张遇到的一个新问题,他再次向新同事求助。

1.4.2 怎样修改宏安全级

修改宏的安全级的操作如图1-15所示。

如果希望录制的宏或编写的VBA程序得到运行的机会,应将安全级设置为“中”或“低”。

如果设置为“中”,每次打开文件时,Excel都会显示【安全警告】对话框,让用户选择启用或禁用宏,如图1-16所示。

如果将安全级设置为“低”,打开文件时Excel不会给出任何提示并直接启用工作簿里所有的宏,如果工作簿里带有恶意代码,这样做是非常危险的,所以,建议将安全级设置为“中”。

注意:在Excel 2003中,修改宏安全级后需要关闭工作簿再重新打开它,修改才能生效。

1.5 VBA,Excel里的编程语言

1.5.1 录制宏不能解决的问题

尽管可以录下用户在Excel里的操作,但却不能满足用户所有的需求。

1.5.2 让工资条一“输”到底

Step 1:查看已经录制的宏,见图1-17。

Step 2:在第一行代码“Sub 生成工资条()”的后面添加两行新代码:

在最后一行代码“End Sub”的前面添加一行代码:

Next

Step 3:关闭窗口,返回Excel工作表界面,重新执行宏,所有的工资条就全部完成了,如图1-19所示。

1.5.3 VBA编程,让你的表格更加灵活

不管你是否知道应该怎样修改和使用录制的宏,但从小张的故事里,应该看到了修改前与修改后的宏在工作效率上的差别。

实际上,在运行宏的过程中,我们总希望能自主地判断和选择需要执行的操作或计算,而录制的宏并不能满足类似的需求。这就要求我们对宏进行适当的修改,甚至自己动手编写满足需要的代码,即:使用VBA编程。

1.5.4 什么是VBA

VBA(Visual Basic For Application)是一种编程语言,是建立在Office中的一种应用程序开发工具。可以利用VBA有效地扩展Excel的功能,设计和构建人机交互界面,打造自己的管理系统,帮助Excel用户更有效地完成一些基本操作、函数公式等不能完成的任务,从而提高工作效率。

同你的名字一样,VBA也只是一个名字,一种编程语言的名字。

1.5.5 宏和VBA有什么关系

VBA是编程语言,宏是用VBA代码保存下来的程序。

录制的宏只是VBA里最简单的程序,正因为如此,录制的宏存在许多的缺陷:如无法进行判断和循环,不能显示用户窗体,不能进行人机交互……

要想打破这些局限,让自己的程序更加自动化和智能化,仅仅掌握录制和执行宏是远远不够的,还需要掌握VBA编程的方法,自主地编写VBA程序。

这就是我们学习VBA的目的。

相关图书

ChatGPT写作超简单
ChatGPT写作超简单
Word/Excel/PPT  AI办公从新手到高手
Word/Excel/PPT AI办公从新手到高手
精通Excel数据统计与分析
精通Excel数据统计与分析
和秋叶一起学Excel(第3版)
和秋叶一起学Excel(第3版)
和秋叶一起学PPT(第5版)
和秋叶一起学PPT(第5版)
Excel高效办公——表格、图表、透视表、函数、数据分析5项修炼
Excel高效办公——表格、图表、透视表、函数、数据分析5项修炼

相关文章

相关课程