32. VBA(五)对象操作

2019-10-16  本文已影响0人  神农架村姑

Excel对象主要有4个:

这里只讲后面3个,不讲工作薄。原因:

工作薄其实就是一个Excel文件。不建议直接操作Excel文件,因为文件属性被更改的机率高,比如修改了文件名,或者文件被移动到其它地方去,这样 写死的VBA代码就不管用了。
在多数情况下,如果需要操作多个工作薄中的数据,建议把这些工作薄里面的表复制到一个工作薄中进行操作。

1. 操作工作表 Worksheets

其实对工作表的操作,更多是对其引用。当一个工作薄中有多个工作表而需要用到不同表中的数据时,就需要分别引用不同的工作表。


2. 操作单元格区域 Range

单元格区域,即Range对象。应该是在Excel VBA中用得最多的对象。Range对象是Worksheet对象的一个子集。所以通常通过worksheet_object.Range()的方式来引用。


单个单元格区域的引用
set rng_sellingPrice = sht_productlist.Range("D2")
多个连续单元格区域的引用
set rng_sellingPrice = sht_productlist.Range("D2:D5")

3. 操作单元格对象

Cells,括号里面输入用数字表示的行号和列号,即可引用到单个单元格对象。Cells对象也是Worksheet对象的一个子集。通常通过worksheet_object.Cells()的方式来引用。

单个单元格的引用,使用Cells和使用Range好像没什么区别,但在进行数据处理时,我们经常需要动态地把数据读或写入一个单元格中,这时,用数字表示位置的Cells对象,再结合For循环,操作起来就很方便了。
如以下代码可以把A1到D5中所有单元格的内容分别输出:

Sub test2()
    Dim sht_slea As Worksheet
    Set sht_slea = Worksheets("SLEA")

    For r = 1 To 5
        For c = 1 To 4
            Debug.Print sht_slea.Cells(r, c)
        Next
    Next
End Sub

PS

4. 父对象

Worksheet对象的父对象为Application对象。Range的父对象是Worksheet对象,Cells对象的父对象也是Worksheet对象。所以在给这些对象赋值时,标准的写法应当要把父对象给写上。

Set sht_slea = Application.Worksheets("SLEA")
Set title_rng = sht_slea.Range("A1:D1")
Set data_rng = sht_slea.Range(sht_slea.Cells(2, 1), sht_slea.Cells(4, 4))

如果VBA中的代码涉及到的对象都位于一个worksheet中,而这个worksheet当前是激活状态,则这些父对象是可以省略的。默认就是当前(激活的)worksheet。

建议在引用Range对象时,Worksheet对象不要省略
在单独引用Cells对象时,Worksheet对象也不要省略

上一篇下一篇

猜你喜欢

热点阅读