面向对象(ObjectOriented)就是程序的一种设计方法,一种在程序代码中写清楚系统到底是什么样子的一种方法。
我们用设计游戏的例子为大家解释面向对象中3个重要元素:类、属性、方法。
按照面向对象的方法,第一件事儿就是要写清楚在我们的系统中会用到哪几类事物。如果对应在游戏中,我们设置人、妖、武器为三类事物。
定义好类之后,需要说明每一类的属性是什么。同样在游戏中,我们也需要定义属性。人的属性有姓名、战斗力;妖的属性有战斗力、原型;武器的属性有坚硬度、磨损程度。
描述完属性之后需要定义每一类事物都能做什么事情,发生什么变化。对于这些能执行的事情和发生的变化,在面向对象中称之为方法。在游戏中,凡是人都能发生跑步、攻击、死亡;对于妖来说,他们的方法就是跑步、攻击、死亡和变身;对于武器来说发生损耗为方法。这里还要说一点,在不同类之间是可以互相持有的。人可以持有武器,妖怪也可以持有武器。很多时候会把这种持有关系表达成为一种属性。也就是说,人除了名字这些属性外,还可以拥有一个武器属性,妖也是一样。
我们已经从概念层面上,讲清楚了系统是什么样子。接下来就是按照这些概念去生成一个又一个的人、妖、武器让他们互相战斗,从而形成游戏。那我们真正看到的这些人、妖、武器才称之为对象。换句话说类规定了一个事物应该是什么样子的,是一个概念。而对象则是按照类生成的一个个真实可以操作的单元。
系统中,万事万物都是对象,这成千上万个对象可以划分成不同类。每一个类都有它独特的属性,表明他的一些特征。每一类也都会有一些独特的方法让它执行某些动作,或者发生一些变化。
在Excel中,类、属性、方法已经是系统写好的。所以,我们在编写程序的时候直接使用这些类就可以操作Excel中的每一个事物。但Excel是个复杂的系统,所以类的名字也非常多。但是没关系,在日常应用中我们只需要重点记住以下几个类就够我们使用了。
这些类事物里,每一类事物都已经被定义好了他们有哪些属性和方法,并且它们之间也存在从属关系。也就是说:每一个Application中有多个WorkBooks,每一个WorkBook中有多个WorkSheets,每一个WorkSheet中有多个Cells或Range。注意使用的时候千万别颠倒它们之间的关系。
下面我们来用个例子练练手:我们希望当我们按下“运行”按钮,在“Sheet3”工作表中显示100。
我们可以使用刚才学习的语言来编写这个程序。首先,定义变量“w1”为一个工作表,并让“w1”等于第三张工作表。然后我们让“w1”的第5行第3列单元格显示100,程序语言如下图:这里小编给大家画个重点,为代表对象的变量赋值时,必须使用“SET”关键字,不然系统会报错。
回到代码里,我们再做一点修改,让“w1”工作表等于Worksheet(2)和Worksheet(1),也让它们的第5行第3列单元格显示100,代码如下:
这样,三张工作表的C5单元格都会变成100。虽然三张工作表都叫“w1”,但是“w1”指向的对象是不一样的,所以就会在不同的对象中显示数字。
其实,上面的这个代码还能再精简化一点。Worksheet从1变成3是有一定规律的,那么我们就可以用一个“For”循环来代替它,代码如下:
学会这招之后,无论有多少张工作表我们都可以轻松应对了。
但是,当不知道有多少张工作表时,就可以用一个函数公式把它们“数”出来,那这个函数公式就是“Count”,我们再来修改一下我们的程序:
这样,无论多少张工作表我们不需要数它的个数也可以全部处理了。
如果想让结果100显示在新添加的工作表中,就可以使用“Worksheets.Add”添加工作表。程序如下:
这里我们要注意“Setw1=Worksheets.Add”是一个赋值语句,赋值语句的执行方向是从右往左的,所以这个语句会先添加新的工作表,再将这张新的工作表赋值为“w1”。
工作表是平时工作当中最常使用到的一个元素,所以我们下节课还会继续讲关于工作表的小知识,期待小伙伴们准时来捧场。往期链接:
入门变精通的VBA小课堂—介绍篇
入门变精通的VBA小课堂—变量与常量篇
入门变精通的VBA小课堂—基本流程控制语句
入门变精通的VBA小课堂—程序调试器
入门变精通的VBA小课堂--While语句
入门变精通的VBA小课堂--多重循环
撰稿:赵高雅
编辑:张佳
▼更多精彩推荐,请关注我们▼