基本信息
编辑推荐
与众不同,独树一帜;读者视角,全新解读。
每一个疑难案例,都源于网友现实的疑惑和困扰;
每一个解决案例,皆来自高手精妙的思路和讲解。
内容简介
计算机书籍
《Excel 2013 VBA编程与实践》为读者展示 Excel VBA 编程的实战技巧,包括工作中最常用的查询、定位、格式转换、报表拆分与合并、开发自定义函数、处理文件与文件夹、功能区设计,以及插件开发实战与原理分析。《Excel 2013 VBA编程与实践》侧重于解决问题和展示解题思路,案例包含诸多常见疑难的解决方案。阅读本书后,读者可以解决工作中的诸多疑难问题,大大提高工作效率,且有助于提升编程能力,拓展思路,从理论向实战迈进。
好的代码应该同时具备准确、纠错、兼容和效率四个特性,《Excel 2013 VBA编程与实践》所有的案例都在准确性与高效性的基础上提供完善的错误处理措施与思路讲解。《Excel 2013 VBA编程与实践》包括 205 个实用案例和一个大型综合应用--开发送货单套打程序。书中的每个案例均采取疑难描述、解决方案、操作方法、原理分析和知识扩展五个步骤进行讲解,力图在解决问题的同时让读者
可以通晓其思路和原理。
读者在学习本书的同时,如果配合 VBA 入门图书《来吧,带你玩转 Excel VBA》或者《Excel VBA程序开发自学宝典》(第 3 版)学习,将会取得更好的效果。另外,《Excel 2013 VBA编程与实践》附赠了书中所有的案例文件与源代码,读者可到网上(http://www.exceltip.net/bkdl.php)下载学习。
作译者
罗刚君,网名andysky,ExcelTip.net技术社区版主,多个Office技术社区资深版主,从事Excel软件研究与写作多年,精通Excel VBA与函数、图表。在公司担任电脑技术管理,对办公应用有较丰富的实战经验和心得。目前已经出版过13部Excel相关著作。微博:http://weibo.com/excelbbx。
章兰新,网名zlxtl,ExcelTip.net技术社区版主,多个Office技术社区资深版主,
拥有十多年丰富的政府信息化实践、管理和组织实施经验,精通Excel和MSSQL在管理中的应用。长期在政府财政经济部门实施电脑技术与管理、统计、数据分析相融合的工作,一直致力于推广Excel和数据库技术,对办公应用有极丰富的实战经验和心得。微博:http://weibo.com/etvba。
陈国良,网名gouweicao78,微软全球最有价值专家(MVP),ExcelTip.net技术社区总版主,多个Office技术社区资深版主,从事公路、铁路工程建设管理十多年,精通Excel函数与公式,具有丰富的实战经验,参与过多部Excel畅销书的编著工作。
目录
1.1 变量、常量与数据类型 1
疑难1 正确地定义变量和数据类型有何优势 1
数据类型与对象类型 5
疑难2 公共变量和静态变量都有何用处 6
公共变量与静态变量的特点 8
1.2 程序防错要点 8
疑难3 常见的代码错误由哪些原因造成 8
查阅VBA帮助的方法 12
疑难4 如何侦测代码出错,并将运行代码的错误原因发给作者 12
程序出错的类型 13
疑难5 如何开发完善的程序 14
数组区域对VBA程序的影响 17
1.3 练习与思考 18
第2章数据查找技巧 19
2.1 快速查找 19
疑难6 能否按范围批量查找数值 19
疑难7 能否将符合多条件之一的所有数据提取到新表中 22
判断工作表是否存在的方法 23
疑难8 可否按格式查找单元格,然后替换其格式 25
前言
2013 的功能极其强大,但是仅靠 Excel 内置功能并不足以实现灵活多变的工作需求,有时
需要采用 Excel VBA 来弥补 Excel 的功能缺陷,提升运算效率。
本书提供了 200 多个 Excel VBA 应用案例,旨在借助案例提升读者对 VBA 的认知,
同时解决工作疑难。配合 VBA 入门图书《来吧,带你玩转 Excel VBA》或者《Excel VBA
程序开发自学宝典》(第 3 版)将有更好的学习效果。
本书使用 Microsoft Excel 2013 软件进行编写,但 90%以上的案例解决方案都通用于
Excel 2003、Excel 2007、Excel 2010 和 Excel 2013。
丛书介绍
"疑难千寻千解"丛书是由 Excel 技巧网(ExcelTip.Net 技术社区)的负责人、微软最有价值专家(MVP)黄朝阳先生策划并组织编写的一套系列书籍。
Excel 技巧网旨在重点推广 Office 2010 及更高版本的应用,并为广大 Office 爱好者提供一个内容充实、分类清晰、经典实用、精彩纷呈、互惠学习、友好交流的平台。社区成立不久便吸引了众多微软 MVP 和有志于推广 Office 应用技术的高手驻足,长期为网友免费解答疑难问题,并勤于将精彩的答疑帖子按其所涉及的知识和应用两个维度,整理成为原创技术文章。
社区设有"讨论"、"文章"、"资源"等几大技术专区,并按照功能划分为 Excel 各类功能、Word、PowerPoint、Access 等主题分类,本书的编写基于 Excel 的函数与公式分类。
本丛书由黄朝阳、王建发、陈国良、荣胜军、陈树青、李懿、陈少迁等微软 MVP,以及罗刚君、李术彬、林盘生、章兰新、任强、彭佳等多位社区资深版主联手打造。得益于多年来在社区答疑中的磨砺,作者们将丰富的实战经验付诸笔端,精心设计了上千个案例,将 Office 方方面面的知识点融入其中。每个案例都采用一般用户遇到疑难时最可能的提问方式和应用场景对问题进行描述,提供具有针对性的解决方案和详尽的操作步骤,并配合以原理分析和知识扩展环节,既授人以鱼,又授人以渔。丛书采用"疑难"加"知识点"的特色目录索引,方便读者根据需要快速查找。
自 2010 年年底以来,本丛书已先后出版了《Excel 2010 操作与技巧》《Excel 2010 函
数与公式》《Excel 2010 VBA 编程与实践》《Excel 2010 SQL 完全应用》《Excel 2010 数据透视表大全》《Excel 2010 VBA 入门与提高》《Word 2010 实用技巧大全》《PowerPoint 2010应用大全》等读本。图书一经上市,立即得到业界诸位专家的推荐和广大读者的一致好评,在当当、京东、亚马逊等各大网上书店几度脱销待货。截至 2015 年 3 月,本丛书销量已超过 25 万册, @Excel 技巧网_官方微博已茁壮成长为粉丝过百万的 Office 类第一大新浪微博博主,旗下@Excel 一分钟动画教程、 @Word 技巧教程、 @PPT 技巧教程、 @Office学吧等系列新浪微博和腾讯微博、微信公众号"Excel 技巧网"分享了大量的学习资料,深得粉丝喜爱和推崇。
在与读者的互动交流中,我们看到了他们对于问题解决的喜悦和对更多知识的殷切期待!为此,我们厉兵秣马,砥砺前行。自 Office 2013 版发布以来,作者们潜心研究,耗时两年多完成新版图书写作。对于渴望学习和掌握新知识的 Office 用户来说,与其千百次地找寻问题答案,不如静心地读此丛书一卷。
读者对象
本书适用于两类读者,一是有 Excel VBA 基础,想进一步研究程序设计思路、代码防错技术、代码优化之道者;二是没有 Excel VBA 基础,也不打算深研 VBA,只是想借助现成的案例文件解决工作的疑难者。
本书包含 205 个实用案例和一个综合应用案例。前 205 个案例在提供详细的操作步骤的同时还注重思路分析,力图让读者明白怎么操作和为什么要如此操作,以及对知识点举一反三,将其顺利地扩展到其他应用领域。读者可以从这些案例中学到开发思路,也可以稍加修改就直接将案例代码应用到自己的工作中。
最后一个综合应用案例会用到近百个知识点,主要介绍开发送货单套打程序系统的步骤和思路。尽管名字为送货单套打,但代码和思路并非仅限于送货单,一切通过针式打印机打印的多联票据皆可采用。送货单与其他单据的差异仅体现在格式不同或者数据的存放位置不同,编写代码的思路是一致的。
书摘
编写代码解决一个工作问题是很简单的,但是如何让程序完善,可以适应所有的环境,且通用、兼容、可防错,这是一门相当复杂的学问。那么如何开发一个完善的程序?如何及时地防止过程中的所有错误呢?
解决方案
通过常规思路开发一段程序完成基本需求,然后查找存在的问题并进行完善;再对新的过程审核是否有新问题,继续完善,直到代码可以应对一切外部环境。
本节以“让用户从对话框输入一个值,并对该值开平方后写入活动单元格”为例,展示利用VBA解决此问题且逐步完善程序的过程。
操作方法
步骤1 按<Alt+F11>组合键打开VBE窗口,然后插入模块,并在模块中录入以下代码:
Sub 获取平方根1() '第一次编写的代码,直接解决问题
Dim Value As Long '声明一个Long型变量
'让用户录入一个值,将该值赋予变量Value
Value = InputBox("请输入数值:", "待开方之数值", 0)
ActiveCell.Value = Sqr(Value) '对变量计算平方根
End Sub
步骤2 按<F5>键执行以上过程,并输入100或者789、123.455等数据进行测试,可以发现当前代码已实现需求的功能。然而,如果用户在对话框中单击“取消”按钮,那么程序会出错。用户很难通过出错提示了解出错的原因,而且假设后面还有其他代码,程序将不再执行。为了解决以上问题,修改代码为:
Sub 获取平方根2() '解问按“取消”键问题
Dim Value As Variant
Value = InputBox("请输入数值:", "待开方之数值", 0)
If Len(Value) = 0 Then Exit Sub '如果变量的值长度为0,那么结束过程,不弹 '出错误提示
ActiveCell.Value = Sqr(Value)
End Sub