ExcelVBA:RangeObject.doc

ExcelVBA:RangeObject

Microsoft Excel VBA : Range object Range Object 一Range object表示一或多个 cells,这可以是在一个worksheet上的单个Cell,单个row, 单个Column, 一或多个Areas, 或者在多个worksheets上的同一些cells(3-D range)。 Area: 术语area(或Block)常指由若干行若干列交叉出的那些Cells,它们组成一个矩形区。 Region: 常指这样的Area,它被四周的(一或多个)空行或空列或边界包围着。 Worksheet object和Range object有许多属性都能返回一个Range object,这些属性包括: Range, Cells, Columns, Rows, Selection 等 ( Application object 也有这些属性,可那不过是ActiveSheet的这些属性的简写。) 自注:其实Range作为method来理解更好些,因为在Range字后必须提供参数,如Range(“B6”), 该“方法”返回一个由参数指定的Range object。 (从技术角度说,方法和Read only属性本来是一回事, 都能返回Object。区别仅在于 方法可以象过程那样调用,而只读属性只能象函数那样出现在表达式里。) 而obj.Cells, Columns 和 Rows属性返回Range object,其范围分别是Worksheet或 已知的Range对象obj上的所有cells,columns,和rows。因此把它们理解成集合更好些 何况还可以引用Rows(i),Columns(j)和Cells(i,j)。可惜Row/Column/Cell不是独立的 objects,从而Rows,Columns,和 Cells也就不是Collections。 Worksheet上有256 columns, 65536 rows和256*65536cells。它们的任一部分 或全部都可以构成一个Range object。 如以下语句 ActiveSheet.Columns.Font.Bold = True ActiveSheet.Columns.Formula = 5 把所有Cells都送了数5(要执行很长时间,用Rows或Cells属性代替Columns也同义)。 Columns,Rows,Cells返回的Range object有Count属性,Worksheet.Columns.Count=256, Rows.Count= 65536,Cells.Count但因为它们不是Collection,因此你不能 声明一个变量为Rows或Row类型的,而只能声明为Range类型的。例如,以下是正确的: Dim r As Range Set r = Application.Columns MsgBox r.Count ‘256 列数, 同 r.Columns.Count (a) Set r = Application.Rows MsgBox r.Count ‘65536 行数, 同 r.Rows.Count (b) Set r = Range(B5:D6) MsgBox r.Count ‘6 Cells数 (c) MsgBox r.Columns.Count ‘3 列数 MsgBox r.Rows.Count ‘2 行数 由此看来, Range object应该有一属性指示它的结构特征 – 是Address属性(好象

文档评论(0)

1亿VIP精品文档

相关文档