前言
微软公司的Office Excel功能强大、应用范围广,因此使用人数较多。而VBA作为Excel的扩展应用程序,使用人数却少了很多,甚至很多职场“老手”已经熟练掌握了Excel的各种使用技巧,却不知道如何在Excel中打开Visual Basic编辑器。
作为一款基于Visual Basic、但依附于Office应用程序的编程语言,VBA即使拥有入门门槛低、使用自由度高等诸多优点,似乎也很难获得一些专业程序员的青睐。
VBA的处境似乎有点尴尬。
但是,不能忽视的是,VBA是Office办公软件取得巨大成功的重要因素之一。
首先,VBA可以简化复杂的工作流程,减少不必要的重复性操作,大大提高工作效率。其次,VBA可以为Excel或者其他Office应用程序添加很多各具特色的小工具或小程序,极大地丰富了Office的功能。最后,基于Visual Basic 的可视化编程方法、强大的功能和较低的学习门槛,VBA为业余编程爱好者敞开了系统开发的大门。
鉴于VBA具有以上优点,我们认为有必要让更多的人认识和学习VBA,并享受VBA为工作和学习带来的便利。基于此目的,我们编写了本书。本书既可作为初学者系统学习VBA的教材,也可作为有一定基础的VBA使用者编程时的参考。
本书内容
第 1 章,通过一个简单的案例,带领读者进入VBA的世界,介绍了VBA过程代码的结构,以及For循环的基本用法。
第2章,不仅介绍了Excel的录制宏功能,以及如何使用For循环对录制的宏代码进行修改,还介绍了相对引用、变量、为工作表插入按钮和宏安全性设置等。通过本章的学习,读者能够利用For循环和录制宏解决工作与学习中遇到的需要执行大量重复操作的问题。
第3章,介绍了VBA的第二个逻辑控制语句:If函数,并且围绕If函数介绍了Range(单元格)对象的简单用法、在工作表中删除整行数据时的注意事项,以及使用Exit For语句退出For循环等内容。在学完本书的前3章后,读者可以利用For循环和If函数解决大部分的单元格取值问题。
第4章,正式引入VBA中对象的概念。本章介绍了Worksheets(工作表)对象和Sheets(表)对象的主要方法与属性,以及Application(主程序)对象的DisplayAlerts(报警显示)属性。本章内容能够使读者对VBA中的对象、方法和属性有一个初步认识。
第5章,介绍了Workbooks(工作簿)对象的主要方法和属性,以及For Each循环的使用方法。在学完本章后,读者能够掌握跨表、跨文件操作数据的基本方法。
第6章,介绍了Range(单元格)对象的主要方法和属性,以及用于获取工作表最后一行数据行号的固定表达式。
第7章,在继续介绍Range对象的同时,还介绍了如何优化和改良编写的VBA代码,如何使用Range对象的筛选方法代替For循环以提高代码的执行效率,以及如何使用MsgBox函数和InputBox函数提高代码的互动性等。
第8章,介绍了VBA中的事件和事件的调用,以及工作表和工作簿中常用的事件,还介绍了With语句的用法。从本章开始,读者会逐渐意识到,编写VBA代码时,Sub和End Sub并非只限定了VBA代码的书写范围,它们还有更深层次的含义。
第9章,主要介绍了VBA中的两类函数:工作表函数和VBA函数。工作表函数是指在Excel中原本就存在的函数,这类函数的功能和使用方法与Excel中的基本一致;而VBA函数是仅存在于VBA中的函数,Excel无法直接调用。本章还介绍了中止编辑器报错的方法。
第10章,介绍了VBA的自定义函数和带参数的过程,以及如何把编写的VBA过程添加到Excel的加载宏中。通过前10章的学习,读者会对VBA代码的结构有比较清晰的认识,并且具备利用VBA解决大多数Excel数据问题的能力。
第11章,介绍了Dir函数的使用方法,以及如何使用关键字Set将对象赋值给变量、Range对象的Find方法等。
第12章,介绍了VBA中数组的使用方法,以及如何利用Timer函数计算代码的执行时间、如何使用GoTo语句退出循环等。
第13章,介绍了ActiveX控件的属性和事件。
第14章,介绍了VBA中窗体的相关知识。通过第13章和第14章的学习,读者将具备使用VBA创建系统前台界面并编写相关代码的能力。
第15章,介绍了VBA中的各种用户信息交互函数,以便让用户在使用VBA编写的各种宏和工具时,拥有更好的使用体验。
第16章,介绍了VBA中的ADO对象。
第17章,介绍了VBA的几种常用自学方法。
第18章,简单介绍了类模块的部分知识,让读者对类模块有个大致了解,并对VBA的整个知识体系加深认识。本章还介绍了VBA中Do-While循环的使用方法。
第19章,介绍了如何利用字典去除数据中的重复值,以及如何利用窗体和控件合理创建用户界面。
第20章,完成商品收银系统用户界面的创建工作,并将完成的用户界面与后台的Access数据库进行关联,最终得到一个完整的C/S架构的小型系统。
本书目标读者
VBA零基础人员。
日常工作中需要频繁接触Excel并且需要操作大量数据的人员,如财务人员、销售人员和采购人员等。通过对本书的系统学习,他们可以利用VBA大幅提高工作效率。
就职于公司信息部、需要为公司其他人员解决Excel难题的运维人员。利用VBA为他人解决问题的最大优势在于无须教会他人解题的思路和步骤,只需要将编写好的宏或绑定了宏的其他控件交给他人使用。
希望尝试自主开发但又未能系统学习其他编程语言的IT从业人员。相比其他编程语言,VBA的学习门槛更低、使用自由度更大、对新手更加友好。