VBA程序中引用Excel单元格区域的几个实例
使用VBA编写Excel应用程序离不开对单元格区域的引用,单元格区域包括单个单元格、由多个单元格组成的区域以及整行和整列等。本文通过几个小实例来介绍VBA程序中引用Excel单元格区域的常见方法。
1、启动Excel并打开VBA编辑器,在工程资源管理器中创建一个模块,在模块的“代码”窗口中输入如下程序代码:
Sub MultiSelection1()
Range("A1:F6 B2:D7").Select
End Sub
按F5键运行该过程,则A1:F6单元格区域和B2:D7单元格区域的交叉区域被选择,如图1所示。
图1 程序运行结果
提示
在VBA中,A1样式标记使用Range属性来返回单元格区域。Range属性的格式如下所示:
Range(Cell1,Cell2)
其中,参数Cell1为必选参数,其可以包括区域操作符(即冒号)、相交区域操作符(空格)以及合并区域操作符(逗号),同时还可以使用已定义的单元格名称。
2、在“代码”窗口中输入如下程序代码:
Sub MultiSelection2()
Worksheets("Sheet1").[A1:F6 B2:D7].Select
End Sub
按F5键运行该过程可获得与步骤1相同的效果,工作表A1:F6单元格区域和B2:D7单元格区域的交叉区域被选择,如图2所示。
图2 选择交叉单元格区域
提示
在引用单元格时,将A1引用样式的单元格区域地址用方括号括起来作为Range属性的引用方式,这样就不需要再使用引号了,可以实现单元格地址的快捷输入。
3、在“代码”窗口中输入如下程序代码:
Sub CellsIndex()
With Range("A1:G10")
For n=1 To.Cells.Count
.Cells(n)=n
Next
End With
End Sub
按F5键运行该过程,则在A1:G10单元格区域的单元格中将依次填入数字,如图3所示。
图3 单元格区域中填入数字
提示
在VBA中可以使用Cells属性通过行列编号来引用单元格,其语法结构如下:
Cells(RowIndex,ColumnIndex)
这里,两个参数均为可选参数,分别表示引用区域的行序号和列序号,带有参数的Cells属性返回代表该单元格的Range对象。
4、在“代码”窗口中输入如下程序代码:
Sub MultiSelection3()
Range("A1:F6 B2:D7")=1
Range("A1:F6 B2:D7").Offset(5,3).Select
End Sub
按F5键运行该过程,则工作表A1:F6单元格区域和B2:D7单元格区域的交叉区域被填充数字1,该交叉区域向右偏移3个单元格、向下偏移5个单元格的单元格区域被选择,如图4所示。
图4 使用Offset属性选择单元格区域
提示
Range对象的Offset属性返回一个基于引用的Range对象且大小相同的单元格区域。Offset属性的语法结构如下所示:
Offset(RowOffset,ColumnOffset)
这里,RowOffset和ColumnOffset参数分别指定单元格区域偏移的行数和列数,其中正值向下和向右移动,负值向上或向左移动。
5、在“代码”窗口中输入如下程序代码:
Sub MultiSelection4()
Range("A1:F6 B2:D7")=2
Range("A1:F6 B2:D7").Resize(5,5).Select
End Sub
按F5键运行该过程,则工作表A1:F6单元格区域和B2:D7单元格区域的交叉区域被填充数字2,该交叉区域扩充5行5列后的单元格区域被选择,如图5所示。
图5 交叉区域扩充5行5列后被选择
提示
Range对象的Resize属性可以调整指定单元格区域的大小并返回调整大小后的单元格区域。Resize属性的语法结构如下所示:
Resize(Rowsize,ColumnSize)
这里,RowSize参数和ColumnSize参数用于指定调整后的单元格区域的行数和列数。
6、在“代码”窗口中输入如下程序代码:
Sub MultiSelection5()
Range("A1:F6 B2:D7")=3
Range("A1:F6 B2:D7").Columns(2).Select
End Sub
按F5键运行该过程,则工作表A1:F6单元格区域和B2:D7单元格区域的交叉区域被填充数字3,该交叉区域的第2列被选择,如图6所示。
图6 交叉区域第2列被选择
提示
Range对象的Columns属性可以返回Range对象,其代表指定单元格区域中的列。其语法结构为:
Columns(CellsIndex)
这里,CellsIndex参数表示单元格区域的列号。同样,Range对象的Rows属性可以返回Range对象,其代表指定单元格区域中的行,其使用方法与Columns属性相同。