属性
可用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()"'Rangeisontheactivesheet
下例清除区域Criteria中的内容。
Worksheets⑴.Range("Criteria").ClearContents
如果用文本参数指定区域地址,必须以A1样式记号指定该地址(不能用R1C1样式记号)。
Cells属性
可用Cells(row,column)(其中row为行号,column为列标)返回单个单元格。下例将单元格A1赋值为24。
Worksheets⑴.Cells(1,1).Value=24
下例设置单元格A2的公式。
ActiveSheet.Cells(2,1).Formula="=Sum(B1:B5)"
虽然也可用Range("A1")返回单元格A1,但有时用Cells属性更为方便,因为对行或列使用变量。下例在Sheet1上创建行号和列标。注意,当工作表激活以后,使用Cells属性时不必明确声明工作表(它将返回活动工作表上的单元格)。
SubSetUpTable()
Worksheets("Sheet1").Activate
ForTheYear=1To5
Cells(1,TheYear+1).Value=1990+TheYear
NextTheYear
ForTheQuarter=1To4
Cells(TheQuarter+1,1).Value="Q"&TheQuarter
NextTheQuarter
EndSub
虽然可用VisualBasic字符串函数转换A1样式引用,但使用Cells(1,1)记号更为简便(而且也是更好的编程习惯)。
可用expression.Cells(row,column)返回区域中的一部分,其中expression是返回Range对象的表达式,row和column为相对于该区域左上角的偏移量。下例设置单元格C5中的公式。
Worksheets⑴.Range("C5:C10").Cells(1,1).Formula="=Rand()"
和Cells
可用Range(cell1,cell2)返回一个Range对象,其中cell1和cell2为指定起始和终止位置的Range对象。下例设置单元格区域A1:J10的边框线条的样式。
WithWorksheets⑴
.Range(.Cells(1,1),.Cells(10,10)).Borders.LineStyle=xlThick
EndWith
注意每个Cells属性之前的句点。如果前导的With语句应用于该Cells属性,那么这些句点就是必需的。本示例中,句点指示单元格处于第一张工作表上。如果没有句点,Cells属性将返回活动工作表上的单元格。
Offset属性
可用Offset(row,column)(其中row和column为行偏移量和列偏移量)返回相对于另一区域在指定偏移量处的区域。下例选定位于当前选定区域左上角单元格的向下三行且向右一列处的单元格。由于必须选定位于活动工作表上的单元格,因此必须先激活工作表。
Worksheets("Sheet1").Activate
'Can'tselectunlessthesheetisactive
Selection.Offset(3,1).Range("A1").Select
Union方法
可用Union(range1,range2,...)返回多块区域,即该区域由两个或多个连续的单元格区域所组成。下例创建由单元格区域A1:B2和C3:D4组合定义的对象,然后选定该定义区域。
Dimr1AsRange,r2AsRange,myMultiAreaRangeAsRange
Worksheets("sheet1").Activate
Setr1=Range("A1:B2")
Setr2=Range("C3:D4")
SetmyMultiAreaRange=Union(r1,r2)
myMultiAreaRange.Select
使用包含若干块的选定区域时,Areas属性很有用。它将一个多块选定区域分割为单个的Range对象,然后将这些对象作为一个集合返回。使用返回的集合的Count属性可检测一个选定区域是否包含多块区域,如下例所示。
SubNoMultiAreaSelection()
NumberOfSelectedAreas=Selection.Areas.Count
IfNumberOfSelectedAreas>1Then
MsgBox"Youcannotcarryoutthiscommand"&_
"onmulti-areaselections"
EndIf
EndSub
举例
例子1
print_r($number);
>
输出:
Array([0]=>0[1]=>1[2]=>2[3]=>3[4]=>4[5]==5)
例子2
print_r($number);
>
输出:
Array([0]=>0[1]=>10[2]=>20[3]=>30[4]=>40[5]=>50)
例子3
print_r($letter);
>
输出:
Array([0]=>a[1]=>b[2]=>c[3]=>d)