看到标题,各位可能要问了,不是说好了讲VBA的么,怎么弄出个对象来了?再说了,程序员都是单身狗,根本没有对象啊?面向对象到底是个什么鬼?
虽然A哥学习VB也有不少时间,但面向对象这个概念其实也是A哥最近在学习Python的时候深入理解的。今天我们就先不讲VBA,A哥带大家说道说道编程的思维方式。
面向对象与面向过程
事实上,与面向对象相对应的,还有面向过程的方式。术语说起来总是特别繁琐,并且不好理解,我们就从一个案例开始,看看这两者的思路区别。
比如,小明以每小时10公里的速度,跑完20需公里要多长时间?很简单,我们可以直接在Sub里写
v= 10 : dist: = 20t = dist/v
然后,我们又问,小明跑完30公里需要多长时间?这个时候,我们就自然会想,不能每次给一个速度和距离我都重写一般代码啊,干脆定义个函数得了!于是:
Function timing(ByVal v As Double, dist As Double) As Doubletiming = dist / vEnd FunctionSub run()Debug.Print timing(10, 25)End Sub
在上面这段里,我们定义了一个函数,并调用了这个计算时间的函数。这就是面向过程型的一种思路,这种思路更注重于问题解决的过程,也更接近于我们日常的思维过程。
面对上面这个问题,还可以有这么一种思路:
先定义一个种类,在这里也就是人类。
然后根据人类的共性,给人类定义一些属性和方法,比如人有眼睛,鼻子,人吃饭等等。
小明作为一个人类的实例,自然也就具备人类的属性和方法,可以直接调用已经定义好的属性和方法。例如,输入 小明.吃饭,就可以操作小明进行吃饭的动作了。
这就是一个典型的面向对象的思路过程。归纳起来,就是:定义类→ 定义属性和方法 → 实例化 → 调用属性和方法。
面向对象的编程方法最大的优点就在于,他可以让程序的后期维护变得简单。这块作为超纲内容,就暂时先不展开了。
当我们谈Excel的面向对象,我们在谈什么
其实在Excel里,对象是无处不在的,A哥是想带大家从程序的维度上来认识Excel。在Excel里,我们常见的有三个对象:
单元格
工作表
工作簿
每个对象又有不同的属性,例如光是单元格就包括以下常见属性:
位置
底色
值
其他等等
当然,对象也都对应着他们的方法。例如,对工作表我们可以进行以下方法:
激活
插入
新建/删除
其他等等
对象,属性,方法是Excel VBA里的一条主线。任何对Excel的操作都离不开这个基本框架,这也就是A哥为什么非得单独开一篇讲解这个的原因。掌握了这个思路,极其有利于我们快速进行VBA学习。