单元格的引用方法
在VBA中经常需要引用单元格或单元格区域区域,主要有以下几种方法。
使用Range属性
VBA中可以使用Range属性返回单元格或单元格区域,如下面的代码所示。
#001 Sub RngSelect()
#002 Sheet1.Range("A3:F6, B1:C5").Select
#003 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属性返回活动表的一个区域,如果活动表不是工作表,则该属性无效。
使用Cells属性
使用Cells属性返回一个Range对象,如下面的代码所示。
#001 Sub Cell()
#002 Dim icell As Integer
#003 For icell = 1 To 100
#004 Sheet2.Cells(icell, 1).Value = icell
#005 Next
#006 End Sub
代码解析:
Cell过程使用Next语句为工作表中的A1:A100单元格区域填入序号。
Cells属性指定单元格区域中的单元格,语法如下:
Cells(RowIndex, ColumnIndex)
参数RowIndex是可选的,表示引用区域中的行序号。
参数ColumnIndex是可选的,表示引用区域中的列序号。
如果缺省参数,Cells属性返回引用对象的所有单元格。
Cells属性的参数可以使用变量,因此经常应用于在单元格区域中循环。
1-1 使用快捷记号
在VBA中可以将A1引用样式或命名区域名称使用方括号括起来,作为Range属性的快捷方式,这样就不必键入单词“Range”或使用引号,如下面的代码所示。
#001 Sub Fastmark()
#002 [A1:A5] = 2
#003 [Fast] = 4
#004 End Sub
代码解析:
Fastmark过程使用快捷记号为单元格区域赋值。
第2行代码使用快捷记号将活动工作表中的A1:A5单元格赋值为2。
第3行代码将工作簿中已命名为“Fast”的单元格区域赋值为4。
注意 使用快捷记号引用单元格区域时只能使用固定字符串而不能使用变量。
1-2 使用Offset属性
可以使用Range对象的Offset属性返回一个基于引用的Range对象的单元格区域,如下面的代码所示。
#001 Sub Offset()
#002 Sheet3.Range("A1:C3").Offset(3, 3).Select
#003 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-3 使用Resize属性
使用Range对象的Resize属性调整指定区域的大小,并返回调整大小后的单元格区域,如下面的代码所示。
#001 Sub Resize()
#002 Sheet4.Range("A1").Resize(3, 3).Select
#003 End Sub
代码解析:
Resize过程使用Range对象的Resize属性选中A1单元格扩展为三行三列后的区域。
Resize属性的语法如下:
expression.Resize(RowSize, ColumnSize)
参数expression是必需的,返回要调整大小的Range 对象
参数RowSize是可选的,新区域中的行数。如果省略该参数,则该区域中的行数保持不变。
参数ColumnSize是可选的,新区域中的列数。如果省略该参数。则该区域中的列数保持不变。
运行Resize过程,选中A1单元格扩展为三行三列后的区域,如图 13所示。
图 13 使用Resize属性调整区域大小
使用Union方法
使用Union方法可以将多个非连续区域连接起来成为一个区域,从而可以实现对多个非连续区域一起进行操作,如下面的代码所示。
#001 Sub UnSelect()
#002 Union(Sheet5.Range("A1:D4"), Sheet5.Range("E5:H8")).Select
#003 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方法将多个非连续区域连接成一个区域
使用UsedRange属性
使用UsedRange属性返回指定工作表上已使用单元格组成的区域,如下面的代码所示。
#001 Sub UseSelect()
#002 Sheet6.UsedRange.Select
#003 End Su
代码解析:
UseSelect过程使用UsedRange属性选择工作表上已使用单元格组成的区域,包括空单元格。如工作表中已使用A1单元格和D8单元格,运行UseSelect过程将选择A1到D8单元格区域,如图 15所示。
图 15 使用UsedRange属性选择已使用区域
使用CurrentRegion属性
resize函数vba使用CurrentRegion属性返回指定工作表上当前的区域,如下面的代码所示。
#001 Sub CurrentSelect()
#002 Sheet7.Range("A5").CurrentRegion.Select
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论