VBA的全称叫VISUAL BASIC ADVANCED,从字面来理解他是可视化BASIC语言,所以说他是一门编程语言。而VBA不仅仅只在EXCEL中,几乎所有的OFFICE的产品都可以使用VBA,比如WORD、ACCESS、OUTLOOK、PPT中都可以使用VBA。我单独把VBA放在EXCEL中说,是因为VBA在EXCEL中使用最为广泛,同时也最能体现VBA的用处。
从编程说起
程序是一种工具,就像画画一样,画画可以用来被人欣赏,也可以用来作为工程的图纸,程序就像是在你面前有一张白纸,旁边准备了各种画图工具,然后你自己来想画什么,就通过画图工具在白纸上进行操作。
编程简单点说就是编写程序,让自己的想法通过代码来让电脑实现。现在光就程序而言有很多种,不过程序既然被称为是程序语言,那也就符合语言的一些特点,单词和语法。无论何种编程语言,他都有自己的语法以及所谓的“词汇”。语法很好理解,就是这门语言特有的语句的组织规范,语法是固定的,你没办法去改变,所以这么多种编程语言都有自己特定的语法,不过这些语法其实大同小异,在我看来编程就分为B语言和C语言,一个通过关键词来表示语法,另一个通过符号来表示。
而程序中所谓的“词汇”,它在程序中本身就设置好的可以直接使用,也可以通过代码来自己创建,就像英语单词一样,每出现一个新的事物,就会产生一个新的单词。而从单词上来说,可以有名词和动词,也可以既是名词也是动词。
好,有了语法,也有了词汇,那么基本上这个语言就成了。通过代码,来告诉计算机该怎么做,计算机就会很忠实地去执行。
其实,程序是模拟人的现实世界来设定的。我们这个世界充满了各种事物,所谓事,就是发生的各种事件,他可以是一个人在跑步,也可以是天空在打雷电;而物就是包括人在内的所有生物和非生物以及数据,他可以大到整个地球,也可以小到一个细胞,他还可以是一个人的三围数值。
事和物结合在一起,在程序里面就叫对象了(OBJECT)。所以,对象可以包含什么,就像对一个人来说,他有四肢,有身高,他能走动,能唱歌,同时还具备改造环境的能力。可能你觉得这和学习程序有什么关系,的确,我并不是专业的程序员,也读过一本程序的书籍,所有我学的程序知识,都是一点一点积累起来的。上面的这些说法,是我学了这么多年的程序之后的一些感悟,其实按照道理来说,学一样东西先是从点到面,从具体到抽象的。不过和大多数教科书一样,第一章永远是概论、总论等等,这些内容抽象,一上来可能看不懂,但这些东西恰恰就是整本书的纲领。
所以VBA既然也是一个编程语言,他完全适用我上面的说法,总结起来就是,事和物都是程序的组成部分,而一个个的事和物可以关联起来组成一个有机的事物,而多个事物也可以组合起来形成一个更大的事物。那么,我们学习起来当然是从最小的事和物开始学起,因为这些是最具体的。
虽然编程是一门语言,但是他学起来不是真的像学语言一样难。因为程序是西方人发明的,都是用英文的,所以有一点英文基础,对于学程序而言是很有用的。
VBA的特点
首先,就是VBA写出来的代码具有很强的可读性。BASIC语言每一行代码都非常接近英语短句。我最早是完全不懂程序的,但是当第一次看到VBA代码的时候,我发觉我居然能理解其中的一些意思。
其次,VBA语言是运行在各个OFFICE产品上的。就拿EXCEL中的VBA来说,EXCEL所有的内置函数都可以在VBA中使用,换句话说,已经有大量的使用功能不必你自己去开发就可以直接拿来用了。
最后呢,VBA虽然比起那些有名气的程序语言来说,显得非常简陋,但是麻雀虽小五脏俱全,差不多凡是大型程序能做到的事情,VBA也能做到。这是因为VBA就是微软的产品,同时WINDOWS也是,所以都是一家的产品,互相之间都是支持的。,当然这一点你未必马上就能感觉到。
如何学VBA
我学程序可以说是野路子,说得直白一点,直接干得了呗。先不管什么概念什么理论,直接写代码,让他运行,然后慢慢摸索。
编程是一种工具,在我看来工具类型的东西,最重要的是实践。VBA或许就是这么灵活,他不需要在你实际应用前先去构思一个框架,或者先去写一些必要的东西,你可以在只掌握变量的情况下,就能够编写一些EXCEL自定义函数。
当自己编写了几个自定义函数或者一些自定义功能的之后,你会慢慢有一些总结和经验。有了这些总结,再去了解一些理论知识,就会一目了然,然后你的水平就会大幅度地提高了。
学习VBA或者说学习任何一门编程,在我看来最难的地方是去了解程序中的错误或者说漏洞。像VBA这样的编程语言自己一个人就能完成,不过使用这些程序的人未必是你自己,所以说编写程序是一个人在思考,而使用程序是很多人,那就说明是一个人在对抗很多人。当自己在考虑编写程序的时候,难免会遇到你根本没想到的问题,所以程序在运行的时候就会发生错误,或者说是漏洞。产生错误和漏洞是无法避免的,大家看到光就WINDOWS这个操作系统就在不停的打补丁,要知道WINDOWS可不是一个人在编写,而是一个团队,团队的成员都是精英,在这种情况下还会有漏洞和错误,更何况自己一个人呢。所以出现错误和漏洞去完善自己代码就是在编程中最难的地方,有时候错误发生了自己都知道。
好了,说了这么些就是想说学习VBA对自己来说好处很大,一方面能解决工作中的很多难题,特别是重复劳动,另一方面能锻炼自己的思维,让自己考虑问题更为谨慎,更为周到。我在接下去的内容中,是按照自己的想法来编写的,当然还是从简单到难的过程,不过中间可能会省略很多理论内容,这些没关系,毕竟很多人不是用VBA来编写一个大型的软件,更多的是解决问题而已。