兰色幻想 发表于 2012-2-4 11:47

关于VBA属性和方法返回对象的理解

   有关对象、属性、方法三个基本概念,有时会产生属性和方法转换为对象的现象。

1、属性转换为对象。
       Range("A1").offset(0,1).Value=100
   上面这句代码的意思是单元格A1的右边单元格(即B1)的值等于100,如果我们把代码一个个词拆开看,有点难于理解,Offset明明是属性,后面怎么跟了一个Value属性呢?
      帮助中这样解释Offset的用途:
               返回一个 Range 对象,该对象代表某个指定区域以外的区域
      即“单元格对象.offset” 做一个整体返回另一个单元格对象。如果还不理解,下面再打个比方。

             张三.身高=1.8米
                   这里张三是对象, 身高是属性 1.8米是属性值
             张三.同学.身高=1.8米
                  张三是对象,同学是属性,而连接在一起"张三.同学"就是另一个人。也是一个对象。
2、方法转换为对象。
      Range("a:a").SpecialCells(xlCellTypeBlanks).Select
      上面这句代码的意思是选取A列空白单元格。如果把代码的词拆开看,同样不容易理解。SpecialCells是方法,而后面跟的select方法。方法也有方法吗?
       帮助里这样解释SpecialCells的,
            返回一个 Range 对象,该对象代表与指定类型及值相匹配的所有单元格
       即 "单元格对象.SpecialCells" 作为一个整体同样可以返回另一个单元格对象。这里为方便大家理解,再打一个比方。
            水壶.盛水
                   这里 水壶是对象, 盛水是方法
            水壶.加厚.盛水
                   这里水壶是对象, 加厚是方法,而 “水壶.加厚” 后还是一个水壶。还是一个对象。这是就加厚由方法转换成了对象。


hrpotter 发表于 2012-2-4 11:49

学习                     

kanchao10 发表于 2012-2-4 11:52

很深奥{:051:}蛋很疼。。。

gdsgzhrsh 发表于 2012-2-4 11:54

向校长学习~~~~~~~~~~~~~~

兔猫兔123 发表于 2012-2-4 12:00

理解了,在这里Range("a:a").SpecialCells作为一个整体,是对象了,而不是Range("a:a")是对象,SpecialCells是方法,单纯套用格式很难理解的。这样就懂了。谢谢兰版,辛苦了。

寂寞深水鱼 发表于 2012-2-4 12:00

感觉有点像语文的加形容词或定语的感觉~~

jinglingshu 发表于 2012-2-4 12:07

学习   学习   谢谢校长

jxncfxsf 发表于 2012-2-4 12:11

学习,是用多了才会理解。

windimi007 发表于 2012-2-4 12:18

兰版辛苦了,学习一下!{:3512:}

yl_li 发表于 2012-2-4 12:18

总结得很好!
自己看帮助理解有点困难,感谢兰版!
页: [1] 2 3 4
查看完整版本: 关于VBA属性和方法返回对象的理解