分享

Excel VBA解读(48):使用VBA找到想要的单元格——小结

 L罗乐 2017-04-22

 

到目前为止,我们用了大约16篇文章来详细介绍了VBA中找到想要的单元格的属性或方法。下面来小结一下,以加深对这些属性或方法的理解,以便在VBA中熟练而灵活地使用它们。

 

通常,VBA中的大多数操作,都是对单元格进行的操作,因此,我们先要定位到想要的单元格,然后才能对它们进行相应的操作,达到我们需要的目的。

 

如果我们知道这个单元格或者单元格区域,那么就可以使用Range属性或者Cells属性直接引用,例如我们想要操作单元格区域A1,就可以使用代码Range(“A1”)Cells(1,1)Cells(1,”A”),等等。如果要操作活动单元格,可以直接使用ActiveCell。如果要对所选区域进行操作,那么可以使用Selection

 

仔细观察一下,我们发现,VBA引用单元格的方式也适用于单元格区域中,也就是说,在单元格区域中,我们也可以使用Range(“A1”)Cells(1,1)等方式来引用该区域中的第1个单元格。

 

有时,我们知道某单元格或者单元格区域,想基于该单元格来定位到其它单元格,可以使用Offset属性。该属性基于起始单元格偏移指定的行数和列数,到达相应的单元格。例如,Range(“A1”).Offset(1,1),以单元格A1为起点,偏移11列后到达单元格B2。这样,有了基点,我们就可以使用Offset到达工作表中的任何地方啦!Offset属性也使我们动态操作工作表单元格成为可能!并且,Offset属性的参数还可以设置为负值,使得我们可以向上或向下到达相应的单元格。

 

Offset属性不同,Resize属性能够让我们基于单元格或者单元格区域中左上角的单元格向右或者向下扩充,从而能够使单元格区域扩大(或者缩小)。对于找到满足条件的单元格后,想基于此单元格或者与此单元格相关联的单元格而扩展单元格区域的情形,Resize属性非常有用。

 

End属性让我们在单元格区域中快速移动,沿上下左右方向导航,相当于在单元格区域中按下<Ctrl 方向键>End(xlUp)表示从当前单元格快速向上移至该单元格上方空单元格之前的单元格,若该列没有空单元格则快速移至第1行相应列的单元格。同样,End(xlDown)End(xlToLeft)End(xlToRight)分别向下、向左、向右快速移动。

 

CurrentRegion属性UsedRange属性能够让我们“立刻获得”大片单元格区域。CurrentRegion属性相当于在工作表中按下<Ctrl Shift *>组合键,快速选择由空行和空列围成的一片单元格区域。UsedRange属性用于获取工作表中由所使用的单元格围成的方形单元格区域,无论该区域内是否有空行或空列,即使在单元格中应用了格式但还没有输入内容,该单元格也会被UsedRange属性获取,从而包含到已使用的单元格区域中。

 

如果要根据提供的值查找该值所在的单元格,在Excel中可以使用“查找”命令,对应于VBA中就是Find方法。结合循环语句,Find方法能够让我们找到工作表中所有满足条件的值。可以通过指定参数来模糊或者精确地查找值。

 

Excel中的“定位条件”命令对应,VBA提供了SpecialCells方法,通过指定类型参数,快速定位到特定的单元格,例如参数指定为xlCellTypeLastCell则会定位到工作表中最后使用的单元格。

 

Union方法可以将工作表中不同的区域组合成一个区域。将Union方法与Find方法和FindNext方法、FindPrevious方法配合使用,可以将找到的所有单元格存储在一个对象变量中,方便接下来的操作。

 

要知道两个区域是否重叠或者要获取两个区域相重叠的部分,可以使用Intersect方法Union方法和Intersect方法还可以用于判断一个区域是否包含另一个区域,在此基础上,可以进一步编写代码保护单元格,防止用户修改特定的单元格区域。

 

EntireRow属性EntireColumn属性可以获取单元格或单元格区域所在的整行或整列。一个典型的应用就是隐藏满足条件的单元格所在的行或列。此外,通过设置行或列的背景色,可以达到高亮显示所在单元格行或列的效果。

 

如果我们选择的单元格或者单元格区域不连续,而是分散在工作表的不同地方,那么可以使用Areas集合来获取这些区域。通过Areas集合,可以方便地获取一整块满足条件的区域。若配合循环语句使用,会使代码简洁而强大。

 

通过Row属性Column属性,我们可以找到所在单元格的行号和列号,或者单元格区域起始位置的行号和列号。知道了自已所在的位置,就可以以此位置为参照点,来引用操作其它单元格了。

 

Count属性能够让我们知道单元格区域中单元格的个数,或者行数,或者列数,甚至提供给我们整张工作表的单元格数、行数、列数。其一大用处是,与End属性结合,找到工作表中已使用的最后一行或列,而不受Excel版本限制。

 

想要知道单元格的地址,使用Address属性,返回单元格的地址或者单元格区域的地址。通过指定相应的参数值,可以以绝对引用、相对引用或混合引用的方式返回单元格地址。

 

找到想要的单元格了,后面怎么办呢?前面我们曾讲过,可以对这些单元格进行格式排版,体现Excel的表现力,但更重要的是,我们要对这些单元格中的数据进行提取、处理和分析,展现Excel强大的自动化数据处理与分析能力。这也是接下来我要讲解的内容。

 

附:相关文章

Excel VBA解读(8):看看Excel的那些常用对象(续2

Excel VBA解读(31):Range对象——从选取单元格说起

Excel VBA解读(32):到达想要的单元格——Offset属性

Excel VBA解读(34):找到单元格所在的行列号——Row属性和Column属性

Excel VBA解读(35):对单元格进行统计——Count属性

Excel VBA解读(36):快速移动单元格——End属性

Excel VBA解读(37):单元格的扩张——Resize属性

Excel VBA解读(38):快速确定自已的地盘——CurrentRegion属性

Excel VBA解读(39):快速确定工作表中已使用的区域——UsedRange属性

Excel VBA解读(40):告诉你单元格住哪儿——使用Address属性获取单元格地址

Excel VBA解读(41):藏得再好也能找到——使用Find方法实现查找

Excel VBA解读(43):快速定位到特定的单元格——SpecialCells方法

Excel VBA解读(44):将单元格联合起来——Union方法

Excel VBA解读(45):查找重叠的单元格区域——Intersect方法

Excel VBA解读(46):选取非连续的单元格区域——Areas集合

Excel VBA解读(47):获取整行或整列——EntireRow属性和EntireColumn属性

 

 

--------------------------------------

 

如果您对本文介绍的内容有什么建议或好的示例,欢迎发送邮件给我:xhdsxfjy@163.com

本文属原创文章,转载请联系我或者注明出处。

 

关注《完美Excel》微信公众账号:

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多