vba单元格区域引用方式的小结.doc
文本预览下载声明
vba单元格区域引用方式的小结在使用ExcelVBA进行编程时,我们通常需要频繁地引用单元格区域,然后再使用相应的属性和方法对区域进行操作。所谓单元格区域,指的是单个的单元格、或者是由多个单元格组成的区域、或者是整行、整列等。下面,我们设定一些情形,以问答的形式对引用单元格区域的方式进行归纳。
问题一:在VBA代码中,如何引用当前工作表中的单个单元格(例如引用单元格C3)?
回答:可以使用下面列举的任一方式对当前工作表中的单元格(C3)进行引用。
(1) Range(C3)
(2) [C3]
(3) Cells(3, 3)
(4) Cells(3, C)
(5) Range(C4).Offset(-1)
Range(D3).Offset(, -1)
Range(A1).Offset(2, 2)
(6) 若C3为当前单元格,则可使用:ActiveCell
(7) 若将C3单元格命名为“Range1”,则可使用:Range(Range1)或[Range1]
(8) Cells(4, 3).Offset(-1)
(9) Range(A1).Range(C3)
问题二:在VBA代码中,我要引用当前工作表中的B2:D6单元格区域,有哪些方式?
回答:可以使用下面列举的任一方式对当前工作表中单元格区域B2:D6进行引用。
(1) Range(“B2:D6”)
(2) Range(B2, D6)
(3) [B2:D6]
(4) Range(Range(B2), Range(D6))
(5) Range(Cells(2, 2), Cells(6, 4))
(6) 若将B2:D6区域命名为“MyRange”,则又可以使用下面的语句引用该区域:
① Range(MyRange)
② [MyRange]
(7) Range(B2).Resize(5, 3)
(8) Range(A1:C5).Offset(1, 1)
(9) 若单元格B2为当前单元格,则可使用语句:Range(ActiveCell, ActiveCell.Offset(4, 2))
(10) 若单元格D6为当前单元格,则可使用语句:Range(B2, ActiveCell)
问题三:在VBA代码中,如何使用变量实现对当前工作表中不确定单元格区域的引用?
回答:有时,我们需要在代码中依次获取工作表中特定区域内的单元格,这通常可以采取下面的几种方式:
(1) Range(“A” i)
(2) Range(“A” i “:C” i)
(3) Cells(i,1)
(4) Cells(i,j)
其中,i、j为变量,在循环语句中指定i和j的范围后,依次获取相应单元格。
问题四:在VBA代码中,如何扩展引用当前工作表中的单元格区域?
回答:可以使用Resize属性,例如:
(1) ActiveCell.Resize(4, 4),表示自当前单元格开始创建一个4行4列的区域。
(2) Range(B2).Resize(2, 2),表示创建B2:C3单元格区域。
(3) Range(B2).Resize(2),表示创建B2:B3单元格区域。
(4) Range(B2).Resize(, 2),表示创建B2:C2单元格区域。
如果是在一个单元格区域(如B3:E6),或一个命名区域中(如将单元格区域B3:E6命名为“MyRange”)使用Resize属性,则只是相对于单元格区域左上角单元格扩展区域,例如:
代码Range(C3:E6).Resize(, 2),表示单元格区域C3:D6,并且扩展的单元格区域可不在原单元格区域内。
因此,可以知道Resize属性是相对于当前活动单元格或某单元格区域中左上角单元格按指定的行数或列数扩展单元格区域。
问题五:在VBA代码中,如何在当前工作表中基于当前单元格区域或指定单元格区域处理其它单元格区域?
回答:可以使用Offset属性,例如:
(1) Range(A1).Offset(2, 2),表示单元格C3。
(2) ActiveCell.Offset(, 1),表示当前单元格下一列的单元格。
(3) ActiveCell.Offset(1),表示当前单元格下一行的单元格。
(4) Range(C3:D5).Offset(, 1),表示单元格区域D3:E5,即将整个区域偏移一列。
从上面的代码示例可知,Offset属性从所指定的单元格开始按指定的行数和列数偏移,从而到达目的单元格,但偏移的行数和列数不包括指定单元格本身。
问题六:在VBA代码中,如何在当前工作表中引用交叉区域?
回答:可以使用Intersect方法,例如:
Intersect(Range(C3:E6), Range(D5:F8)),表示单元格区域D5:E6,即单元格区域C3:E6与D5:F8相
显示全部