首先,Range对象可以代表一个单元格、一行/列单元格、连续/非连续单元格区域、多个工作表上的一组单元格。
其次,只要在Excel程序内进行操作,都需要将其表示为一个Range对象,随后使用Range对象的方法和属性。
技巧1 单元格的引用方法
1-1 使用Range属性
VBA中可以使用Range属性返回单元格或单元格区域
#1 sub RngSelect() #2 Sheet1!.range("A3:F6,B1:C5").Select #3 end sub
代码解析:
RngSelect过程使用Select方法选中A3:F6,B1:C5单元格区域。
在单元格区域引用中,空格"A3:F6 B1:C5"表示两个操作区域的交叉区域
1-2 使用Cell属性
Sub cell() Dim icell As Integer #Dim 变量名 As 数据类型,用于声明变量并分配存储空间 For icell = 1 To 100 Sheet2.Cells(icell, 1).Value = icell #1到100行,第一列单元格 Next End Sub
代码解析:
Cell过程使用For...Next语句为工作表中的A1:A100单元格区域填入序号。
Cells属性指定单元格区域中的单元格,语法如下:
Cells(RowIndex, ColumnIndex)
参数RowIndex是可选的,表示引用区域中的行序号。
参数ColumnIndex是可选的,表示引用区域中的列序号。
如果缺省参数,Cells属性返回引用对象的所有单元格。
Cells属性的参数可以使用变量,因此经常应用于在单元格区域中循环。
Dim语句用于在代码中定义所有变量,如果担心自己忘记定义变量,可以在代码板块的最前面输入:Option Explicit,如果不用AS+数据类型,就会默认为Variant类型
那有哪些数据类型呢?
1-3 使用快捷记号
在VBA中可以将A1引用样式或命名区域名称使用方括号括起来,作为Range属性的快捷方式,这样就不必键入单词“Range”或使用引号,如下面的代码所示。
#001 Sub Fastmark() #002 [A1:A5] = 2 #003 [Fast] = 4 #将已命名为fast的单元格赋值为4 #004 End Sub
代码解析:
Fastmark过程使用快捷记号为单元格区域赋值。
第2行代码使用快捷记号将活动工作表中的A1:A5单元格赋值为2。
第3行代码将工作簿中已命名为“Fast”的单元格区域赋值为4。
1-4 使用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。
1-5 使用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是可选的,新区域中的列数。如果省略该参数。则该区域中的列数保持不变。
1-6 使用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对象。
1-7 使用usedRange属性
使用UsedRange属性返回指定工作表上已使用单元格组成的区域
#001 Sub UseSelect() #002 Sheet6.UsedRange.Select #003 End Sub
代码解析:
UseSelect过程使用UsedRange属性选择工作表上已使用单元格组成的区域,包括空单元格。如工作表中已使用A1单元格和D8单元格,运行UseSelect过程将选择A1到D8单元格区域。
1-8 使用CurrentRegion属性
使用CurrentRegion属性返回指定工作表上当前的区域,如下面的代码所示。
#001 Sub CurrentSelect() #002 Sheet7.Range("A5").CurrentRegion.Select #003 End Sub
代码解析:
CurrentSelect过程使用CurrentRegion属性选择工作表上A5单元格当前的区域,当前区域是一个边缘是任意空行和空列组合成的范围。