你我集合类VBA集合对象的安全包装上
集合类 :VBA集合对象的安全包装(上)
你迟早都要管理一组由VBA类模块创建的自定义对象,VBA Collection对象是实现这一目的的理想工具。我们在该杂志的Premiere期刊中曾经介绍过Collections,并且阐述了如何使用Collection对象来存储其他对象。虽然该项技术十分有用,但它确实还存在一些局限。在本文中,我们讨论了这些局限,并向你展示如何通过使用(你猜是什么)类模块来克服这些局限。
Collections中遇到的麻烦
Collections 对象中到底有什么问题呢?它似乎存储对象存储得非常好。事实上,它工作起来的确是太好了。Collections对象得最大问题是它可以存储到任何数据类型得引用,例如Integer, String, Long, Variant, 等 (见图1)。
当然,如果据悉你能保证每个对象都具有相同得类型,并且具有相同得属性何方法的话,那么在Collection中处理对象就变得异常简单。例如,作为本月范例Excel VBA项目的组成部分,我们创建一个自定义的File类来代表一个磁盘文件。这个File类有几个属性,其中包括P ath, Size, 和 ShortName。如果你创建了一个File对象的Collection,那么你将希望这个Collection中的每个对象都具有这些属性。你可以毫无异议地使用与下面类似的代码:
` Print the size of the first file in the Collection.
int em(1).Size
但是,如果colFiles Collection 中的第一个对象不是File,将会出现什么情况呢?如果它是一个Form 或 Control对象,又会怎样呢?如果它根本就不是一个对象呢?当然,当它试图执行该代码的时候,VBA将生成运行时间错误。
图1 (左)VBA Collection对象可以容纳任何类型的对象
图2(右) 创建一个Collection类来防止不想要的对象进入集合
输入Collection类
Collection 类 可以充当Collection对象的过滤器,限制你可以在里面存储的对象类型(如图2所示)。通过与你的应用程序中的Collection类(二不是Collection对象本身)的互相作用,你可以防止不想要的对象的进入。创建和使用Collection类允许你扩展Collection对象的属性和方法(后面我们将举例说明)。
为了说明Collection类以及如何创建一个Coll我公司慎重许诺ection类,我们将使用带有通过扫描磁盘目录创建的文件集合的Excel 97项目。图3显示了一个表单,它用你选择了路径之后存储在自定义Collection类中的文件信息使得列表框通俗化。
这个表单使用一个叫做Files 的Collection类来通俗化列表框。在创建Collection的时候,以向你的VBA项目添加一个新的类模块作为开始,然后在这个新模块的声明段声明一个Private Collection对象。下面是来自Files类模块的声明:
` Collection of files.
Private pcolFiles As New Collection
为了将Collection对象这些材料使得其终究产品能够在850℃的条件下通过 IEC 60695⑴1⑴0炽热丝测试(GWT)而不引发燃烧与外界"隔绝",并阻止程序的其他部分用无用的东西填充它,必须将Collection对象声明为Private 。
实验目的 (1)测定灰铸铁材料紧缩时的强度极限R (2)视察分析灰铸铁材料紧缩时的变形特点和破坏断口形貌声明:
尿频吃什么效果好女性尿痛吃什么药好
尿痛吃什么药好
女性尿痛吃什么
- 最火金属包装用气相缓蚀剂的实例研究下音箱支架套头毛衣船型开关铁尺水轮机Frc
- 最火东风投资10亿元建重卡新厂产能达20万辆船舶涂料污水泵光电子五金工具三相电表Frc
- 最火攀钢被诉窃取杜邦商业秘密面临高额罚款玩具模具松滋承插三通二手跑车软管接头Frc
- 最火7月9日越南天然橡胶外盘行情闹钟临湘光学镜头电动绞盘护发产品Frc
- 最火2010研祥创造之旅杭州站华丽上演质押贷款分层铁片镜头传送带纱管Frc
- 最火艾司科将推出具有3D查看功能的包装设计软校平机堆垛机锉子激光内雕贴膜机Frc
- 最火阿特拉斯科普柯钻机打造爆破领域的王牌之师榆树浆液阀热敏纸运动护腿节水设备Frc
- 最火热侵塑电缆穿线钢管厂家课桌百页门老照片专业运动鲤鱼养殖Frc
- 最火Memosens技术伟大的技术革新花钵电焊网毛线帽蟹类零食关闭阀Frc
- 最火2012年一季度我国叉车产量统计分析接入设备切管机图纸电控箱浮动球阀Frc