VBA对象模型和对象引用

2019-10-14 15:51:16 浏览数 (1)

大家好,上节简述了对象篇的基础内容,包括对象、集合、属性、方法、事件等。那么本节就来先介绍由它们共同搭建的对象模型。

理解EXCEL的对象模型,有助于我们学习掌握VBA编程。

对 象 模 型

EXCEL中的各种对象并不是孤立存在的,彼此之间都是有联系和层级关系,对象模型的概念就是用来描述对象之间关系的,构建了一个完整的体系。

上一节中其实已经提到了对象之间的层级关系,我们在平时操作时也是按这个层级关系使用。用application对象即excel主程序打开一个workbook工作簿对象,一个空白工作簿通常默认有1个或3个worksheet普通工作表对象,我们在工作表的range单元格对象中输入内容。

对象的层级结构图如下:

之所以要了解某个对象在对象模型层级中的位置,是为了编写VBA代码时可以方便引用的该对象。从而对该对象进行操作,并以特定的方式组织这些对象,使excel程序能根据需要自动完成工作任务。

对 象 引 用

学习对象模型主要是解决对象引用的问题,而初学时不容易理解。其实主要需要解决有两个主要问题?一、不同对象的表示方法。二、VBA代码中引用对象的格式。

在说明这两问题之前,先说一个平常的例子,寄信件和快递时都需要家庭地址。比如山东省烟台市莱山区鹿鸣小区3号楼1单元102室。如果此时就在莱山区内,再询问家庭住址时可以直接回答是鹿鸣小区3号楼1单元102室,而省略了前面已知的部分。

讲完这个例子再回头看这两个问题。

1、VBA中代码引用对象的格式

在VBA编写代码时, 以引用最常用的单元格对象为例,由于对象模型的层级关系,也是以类似地址的方式具指定到末级对象,对象之间以英文句号间隔,语法格式是:对象名.对象名....对象名。

如引用工作簿“工作”这个文件的工作表“表1”中的A1单元格的具体语句就是:

application.workbooks(”工作.xlsx“).worksheets("表1").range("A1")

同样语句也可以像地址一样,在一定条件下省略。执行VBA代码时,如果当前打开运行的就是工作簿对象工作.xlsx时。语句可以直接写成worksheets("表1").range("A1")。如果当前工作表对象“表1”是当前打开使用的工作表。语句就可以直接写成range("A1"),这也就是我们之前示例可以直接使用range对象的原因。(在编写代码时根据需要来省略,防止代码错误)。

2、不同对象的单独表示方法

上面说明了引用对象的格式,还需要解决的问题是语句中对象如何表示。下面会先整体概述。

application是excel主程序,直接表示即可。

range对象作为最常用对象,暂时只介绍最常用的表示方法range(”列号行号")。如range("A1")表示A1单元格,rang("A1:B5")表示A1:B5的单元格区域。作为最常用对象后续还会再作详细介绍,

对于workbook工作簿和workshet工作表两个对象表示方法此次主要介绍引用集合中对象的方法。

第一种简单的语法:对象集合("对象名")

这种方式比较容易理解,集合中某个名称的对象。对象名称需要有扩展名后缀。类似于城市中名为烟台的城市。

第二种语法为:对象集合(对象索引号)

对象索引号即对象在集合中的顺序,这与对象的名称无关,而是工作表排序和打开工作簿的顺序。

以工作表为例。“表1”和“表2”两个工作表在工作表集合中的默认排序是sheet1和sheet2,所以它们就可以分别表示为worksheets(1)和worksheets(2),再新建工作表后,名称为“sheet1"。但它的默认顺序是sheet3,可以表示为worksheets(3)。

工作簿workbook对象也类似,但它们的顺序是按工作簿打开的先后顺序来编号的。同样可以用workbook(1)这样表示。

vba

0 人点赞