Excel 模块与类模块的区别,各有什么用
类别是什么?
类别是对象的定义。其中包含对象动作行为的相关信息,包括对象的名称、方法、属性和事件。它实际上不是对象本身,因为它不存在于内存中。当执行的程序代码参考类别时,就在内存中建立类别的新执行个体,即对象。虽然只有一个类别,但可在内存中,从该类别建立多个相同类型的对象。
可以把类别看作「理论上」的对象 — 也就是说,它提供对象的蓝图,但本身在内存中没有实质存在。从这个蓝图可以建立数量不限的对象。每一个从类别建立的对象都有相同的成员:其属性、方法和事件。但各对象都像独立实体一样运作;例如,一个对象的属性可以设定成与其它相同类型对象不同的值。
一个 Microsoft? Visual Basic? for Applications (VBA) 项目可以包含两种不同的类别模块:一种是基本类别模块,没有任何使用者接口与其相关联,另一种是与窗体或其它组件相关联的类别模块。与窗体相关联的类别模块其实与基本类别模块完全一样,但只有相关联的窗体存在于内存中时,它们才存在于内存中。有相关联类别模块之对象的范例是 Userforms、Microsoft? Access 窗体和报表、Microsoft? Word ThisDocument 物件、还有 Microsoft? Excel ThisWorkbook 和 SheetN 物件。
加入类别模块
若要在 Microsoft? Visual Basic? for Applications (VBA) 项目中加入类别模块,请在 Visual Basic 编辑器中的 [插入] 菜单上按一下 [类别模块]。然后在 [属性] 窗口中设定其 Name 属性来命名类别模块。切记类别模块将被视为对象,因此最好使用可提示对象功能的名称。指定给类别模块的名称也将是它显示在对象对象检视器 中 [类别] 清单上的名称。
若已遵循标准模块的命名惯例,在此即可放弃三个字母的前缀。最好是凭直觉来为对象命名。
建立类别的新执行个体
若要在程序代码中使用自订对象,请先建立定义该对象之类别的新执行个体。当您建立类别的新执行个体时,即在内存中建立由类别定义的对象。
您可以从任何类型的模块内部,建立类别的新执行个体。建立 ClassName 类型的对象变量,然后使用 New 关键词,将类别的新执行个体指定给对象变量。
宏与子程序的区别
宏的意思是,一系列可以重复的动作。
在Excel、Word等应用软件里,宏是用VBA(Visual Basic for Application)语言编写的,换句话讲,二者实际上是一个东东。
举例,下面是Excel中的方法:
1. 点菜单的工具,宏,录制宏,做一些简单的动作,如在A1输入1,在B1输入 =A1*2,将B1的字体颜色设为红色,停止录制。同时按Alt和F11进入VB界面,在左上窗口找到模块一,双击,右边窗口出来了你录制的宏的代码。懂英语最好了,一句一句就象白话文:)
2. 裘伯君说:编程只需掌握判断语句。VBA中典型的判断语句如下:
if 某条件 then
一些语句
else
又一些语句
end if
简单的if语句可以是
if 某条件 then
一些语句
end if
更简单的判断语句为
if 某条件 then 一语句
举例,在你录制的代码处粘贴以下宏:
Sub Test()
If 5 > 2 then Msgbox "I Love U!"
End Sub
按F5运行此宏,你会看到一消息框,“I Love U!"
所有的操作无非是一大堆逻辑判断,即If语句中再套If语句。
3. 除了判断语句,还应掌握循环语句,应为电脑擅长的就是重复工作:)
粘贴以下代码在有你录制宏的地方:
Sub Test2()
for i = 1 to 10
cells(i,1)=i
cells(i,1).font.colorindex = i
next i
end sub
把宏的窗口变小些,让你能看到Excle表格的A列,在宏的窗口中重复按F8,看Excle里的变化。
For ... to ...
一些语句
Next
是经典的循环语句,刚才那个代码的意思是从1重复到10,其中Cells(i,1)是工作表中的第i行第1列,font.colorindex你录制的第一个宏里有的,就是设字体颜色。
宏与子程序都可以用一个名字定义一段程序,以简化源程序的结构和设计。二者的区别:
引用方式不同在源程序中,通过书写宏名来引用宏,而子程序是通过CALL指令来调用。
扩展方式不同宏调用是通过宏扩展来实现的,宏引用多少次,就相应扩展多少次,所以,引用宏不会缩短目标程序;而子程序代码在目标程序中只出现一次,调用子程序是执行同一程序段,因此,目标程序也得到相应的简化。
适用场景不同子程序优点:模块化,节省内存,可被多次调用,编程效率高。缺点:额外开销(保存返回地址,计算转向地址,传递参数等)大,增加了执行时间。适用于子功能代码较长、调用比较频繁的情况。宏调用优点:参数传送简单,执行效率高。缺点:不节省空间,适用于子功能代码较短、传参较多的情况。
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!