1.表示连续区域
Range("A1")表示单个单元格A1,同cells(1,1);
Range("A1:C5")或Range("A1","C5")表示A1:C5区域;
Range(cells(i,j),cells(m,n))表示第i行第j列的单元格到第m行n列的单元格区域,有时cells前需加worksheets("sheet1").之类;
2.表示不连续区域
Range("A1:B2,C3:D4")表示A1:B2和C3:D4两个区域;
3.表示整行和整列
Range("1:1")表示第一行,同rows(1);
Range("A:A")表示第一列,同columns(1)或columns("A");
Range对象
代表某一单元格、某一行、某一列、某一选定区域(该区域可包含一个或若干连续单元格区域),或者某一三维区域。
说明
示例部分中说明了以下用于返回 Range 对象的属性和方法:
示例
使用 Range(arg)(其中arg 为区域名称)可返回一个代表单个单元格或单元格区域的 Range 对象。下例将单元格 A1 中的值赋给单元格 A5。
Worksheets("Sheet1").Range("A5").Value = _
Worksheets("Sheet1").Range("A1").Value
下例通过为区域 A1:H8 中的每个单元格设置公式,用随机数字填充该区域。如果在不带对象识别符(句点左边的对象)的情况下使用 Range 属性,该属性会返回活动表上的一个区域。如果活动表不是工作表,则该方法失败。在使用没有显式对象识别符的 Range 属性之前,请先使用 Activate 方法激活一个工作表。
Worksheets("Sheet1").Activate
Range("A1:H8").Formula = "=Rand()" 'Range is on the active sheet
下例清除区域名为“Criteria”的区域中的内容。
如果用文本参数指定区域地址,必须以 A1 样式记号指定该地址(不能用 R1C1 样式记号)。
Worksheets(1).Range("Criteria").ClearContents
使用 Cells(row,column)(其中row 是行号,column 是列标)可返回一个单元格。下例将单元格 A1 赋值为 24。
Worksheets(1).Cells(1, 1).Value = 24
下例设置单元格 A2 的公式。
ActiveSheet.Cells(2, 1).Formula = "=Sum(B1:B5)"
虽然也可用 Range("A1")
返回单元格 A1,但有时用 Cells 属性更为方便,因为对行或列使用变量。下例在 Sheet1 上创建行号和列标。注意,当工作表激活以后,使用 Cells 属性时不必明确声明工作表(它将返回活动工作表上的单元格)。
Sub SetUpTable()
Worksheets("Sheet1").Activate
For TheYear = 1 To 5
Cells(1, TheYear + 1).Value = 1990 + TheYear
Next TheYear
For TheQuarter = 1 To 4
Cells(TheQuarter + 1, 1).Value = "Q" & TheQuarter
Next TheQuarter
End Sub
使用expression.Cells(row,column)(其中expression 是返回 Range 对象的表达式,row 和column 是相对于该区域左上角的偏移量)可返回区域中的一部分。下例设置单元格 C5 中的公式。
Worksheets(1).Range("C5:C10").Cells(1, 1).Formula = "=Rand()"
使用 Range(cell1, cell2)(其中cell1 和cell2 是指定起始和终止单元格的 Range 对象)可返回一个 Range 对象。下例设置单元格区域 A1:J10 的边框线条的样式。
请注意每个 Cells 属性之前的句点。如果前导的 With 语句应用于 Cells 属性,那么这些句点就是必需的。本示例中,句点指示单元格处于工作表一上。如果没有句点,Cells 属性将返回活动工作表上的单元格。
With Worksheets(1)
.Range(.Cells(1, 1), _
.Cells(10, 10)).Borders.LineStyle = xlThick
End With
使用 Offset(row, column)(其中row 和column 为行偏移量和列偏移量)可返回相对于另一区域在指定偏移量处的区域。下例选定位于当前选定区域左上角单元格的向下三行且向右一列处的单元格。由于必须选定位于活动工作表上的单元格,因此必须先激活工作表。
Worksheets("Sheet1").Activate
'Can't select unless the sheet is active
Selection.Offset(3, 1).Range("A1").Select
使用 Union(range1, range2, ...) 可返回多块区域,即该区域由两个或多个连续的单元格区域所组成。下例创建由单元格区域 A1:B2 和 C3:D4 组合定义的对象,然后选定该定义区域。
Dim r1 As Range, r2 As Range, myMultiAreaRange As Range
Worksheets("sheet1").Activate
Set r1 = Range("A1:B2")
Set r2 = Range("C3:D4")
Set myMultiAreaRange = Union(r1, r2)
myMultiAreaRange.Select
如果您处理包含多个区域的选定内容,Areas 属性是很有用的。它将多区域选定内容拆分为单个的 Range 对象,然后将对象返回为一个集合。您可以对返回的集合使用 Count 属性,以查找包含多个区域的选定内容,如下例所示。
Sub NoMultiAreaSelection()
NumberOfSelectedAreas = Selection.Areas.Count
If NumberOfSelectedAreas > 1 Then
MsgBox "You cannot carry out this command " & _
"on multi-area selections"
End If
End Sub
Range.Areas 属性 |
返回一个 Areas 集合,该集合表示多重区域选择中的所有区域。只读。
语法
表达式.Areas
表达式 一个代表 Range 对象的变量。
说明
对于单一选择区域,Areas 属性返回只包含一个对象的集合,即原始 Range 对象本身。对于多重选择区域,Areas 属性返回一个集合,该集合包含与每个选定区域相对应的对象。
示例
本示例在用户选定多个区域并试图执行某一命令时显示提示信息。该示例必须在工作表上运行。
If Selection.Areas.Count > 1 Then
MsgBox "Cannot do this to a multi-area selection."
End If
Areas 集合 |
由选定区域内的多个子区域或连续单元格块组成的集合。
说明
没有单独的 Area 对象;Areas 集合内的各个成员是 Range 对象。在 Areas 集合中,选定区域内每个离散的连续单元格区域都有一个 Range 对象。如果选定区域内只有一个子区域,则 Areas 集合包含一个与该选定区域对应的 Range 对象。
示例
使用 Areas 属性可返回 Areas 集合。下例中,如果当前选定区域包含多个子区域,就清除该选定区域。
If Selection.Areas.Count <> 1 Then Selection.Clear
使用 Areas(index)(其中index 为区域索引号)可从集合中返回单个 Range 对象。该索引号对应选定这些区域的顺序。下例中,如果当前选定区域包含多个子区域,就清除该选定区域中的第一个子区域。
If Selection.Areas.Count <> 1 Then
Selection.Areas(1).Clear
End If
某些操作不能在选定区域内的多个子区域上同时执行;必须在选定区域内的单个子区域上循环,对每个单独的子区域分别执行该操作。下例中,如果选定区域仅包含一个子区域,就对该选定区域执行名为“myOperation”的操作;而如果选定区域包含多个子区域,下例将对选定区域内每个单独的子区域分别执行这一操作。
Set rangeToUse = Selection
If rangeToUse.Areas.Count = 1 Then
myOperation rangeToUse
Else
For Each singleArea in rangeToUse.Areas
myOperation singleArea
Next
End If
source:VBA Help