课程咨询 加我微信EXCEL880B 试学网址http://v.excel880.com
单元格的引用方法
在VBA中经常需要引用单元格或单元格区域区域,主要有以下几种方法。
1.1 使用Range属性
VBA中可以使用Range属性返回单元格或单元格区域,如下面的代码所示。
Sub RngSelect()
Sheet1.Range("A3:F6, B1:C5").Select
End Sub
代码解析:
RngSelect过程使用Select方法选中A3:F6,B1:C5单元格区域。
Range属性返回一个Range对象,该对象代表一个单元格或单元格区域,语法如下:
Range(Cell1, Cell2)
参数Cell1是必需的,必须为 A1 样式引用的宏语言,可包括区域操作符(冒号)、相交区域操作符(空格)或合并区域操作符(逗号)。也可包括美元符号(即绝对地址,如"$A$1")。可在区域中任一部分使用局部定义名称,如Range("B2:LastCell"),其中LastCell为已定义的单元格区域名称。
参数Cell2是可选的,区域左上角和右下角的单元格。
运行Sub RngSelect过程,选中A3:F6, B1:C5单元格区域,如图 11所示。
图 11使用Range属性引用单元格区域
注意 如果没有使用对象识别符,Range属性返回活动表的一个区域,如果活动表不是工作表,则该属性无效。
1.2 使用Cells属性
使用Cells属性返回一个Range对象,如下面的代码所示。
Sub Cell()
Dim icell As Integer
For icell = 1 To 100
Sheet2.Cells(icell, 1).Value = icell
Next
End Sub
代码解析:
Cell过程使用For...Next语句为工作表中的A1:A100单元格区域填入序号。
Cells属性指定单元格区域中的单元格,语法如下:
Cells(RowIndex, ColumnIndex)
参数RowIndex是可选的,表示引用区域中的行序号。
参数ColumnIndex是可选的,表示引用区域中的列序号。
如果缺省参数,Cells属性返回引用对象的所有单元格。
Cells属性的参数可以使用变量,因此经常应用于在单元格区域中循环。
1.3 使用快捷记号
在VBA中可以将A1引用样式或命名区域名称使用方括号括起来,作为Range属性的快捷方式,这样就不必键入单词"Range"或使用引号,如下面的代码所示。
Sub Fastmark()
[A1:A5] = 2
[Fast] = 4
End Sub
代码解析:
Fastmark过程使用快捷记号为单元格区域赋值。
第2行代码使用快捷记号将活动工作表中的A1:A5单元格赋值为2。
第3行代码将工作簿中已命名为"Fast"的单元格区域赋值为4。
注意 使用快捷记号引用单元格区域时只能使用固定字符串而不能使用变量。
1.4 使用Offset属性
可以使用Range对象的Offset属性返回一个基于引用的Range对象的单元格区域,如下面的代码所示。
Sub Offset()
Sheet3.Range("A1:C3").Offset(3, 3).Select
End Sub
代码解析:
Offset过程使用Range对象的Offset属性选中A1:A3单元格偏移三行三列后的区域。
应用于Range对象的Offset 属性的语法如下:
expression.Offset(RowOffset, ColumnOffset)
参数expression是必需的,该表达式返回一个Range对象。
参数RowOffset是可选的,区域偏移的行数(正值、负值或 0(零))。正值表示向下偏移,负值表示向上偏移,默认值为 0。
参数ColumnOffset是可选的,区域偏移的列数(正值、负值或 0(零))。正值表示向右偏移,负值表示向左偏移,默认值为 0。
运行Offset过程,选中A1:A3单元格偏称三行三列后的区域,如图 12所示。
图 12使用Range对象的Offset属性
1.5 使用Resize属性
使用Range对象的Resize属性调整指定区域的大小,并返回调整大小后的单元格区域,如下面的代码所示。
Sub Resize()
Sheet4.Range("A1").Resize(3, 3).Select
End Sub
代码解析:
Resize过程使用Range对象的Resize属性选中A1单元格扩展为三行三列后的区域。
Resize属性的语法如下:
expression.Resize(RowSize, ColumnSize)
参数expression是必需的,返回要调整大小的Range 对象
参数RowSize是可选的,新区域中的行数。如果省略该参数,则该区域中的行数保持不变。
参数ColumnSize是可选的,新区域中的列数。如果省略该参数。则该区域中的列数保持不变。
运行Resize过程,选中A1单元格扩展为三行三列后的区域,如图 13所示。
图 13使用Resize属性调整区域大小
1.6 使用Union方法
使用Union方法可以将多个非连续区域连接起来成为一个区域,从而可以实现对多个非连续区域一起进行操作,如下面的代码所示。
Sub UnSelect()
Union(Sheet5.Range("A1:D4"), Sheet5.Range("E5:H8")).Select
End Sub
代码解析:
UnSelect过程选择单元格A1:D4和E5:H8所组成的区域。Union方法返回两个或多个区域的合并区域,语法如下:
expression.Union(Arg1, Arg2, ...)
其中参数expression是可选的,返回一个Application对象。
参数Arg1, Arg2, ...是必需的,至少指定两个Range对象。
运行UnSelect过程,选中单元格A1:D4和E5:H8所组成的区域,如图 14所示。
图 14使用Union方法将多个非连续区域连接成一个区域
1.7 使用UsedRange属性
使用UsedRange属性返回指定工作表上已使用单元格组成的区域,如下面的代码所示。
Sub UseSelect()
Sheet6.UsedRange.Select
End Su
代码解析:
UseSelect过程使用UsedRange属性选择工作表上已使用单元格组成的区域,包括空单元格。如工作表中已使用A1单元格和D8单元格,运行UseSelect过程将选择A1到D8单元格区域,如图 15所示。
图 15使用UsedRange属性选择已使用区域
1.8 使用CurrentRegion属性
使用CurrentRegion属性返回指定工作表上当前的区域,如下面的代码所示。
Sub CurrentSelect()
Sheet7.Range("A5").CurrentRegion.Select
End Sub
代码解析:
CurrentSelect过程使用CurrentRegion属性选择工作表上A5单元格当前的区域,当前区域是一个边缘是任意空行和空列组合成的范围。
运行CurrentSelect过程将选择A5到B6单元格区域,如图 16所示。
图 16CurrentRegion属性选择当前的区域