第三节 单元格和区域操作 EXCEL 数据的计算归根到底还是对表的单元格进行的,所以单元格和区域操作非常重要的,这一节就详细介绍这方面的内容。 一、如何引用单元格和区域 1)用Range 属性引用单元格和单元格区域 使用 Range 属性来引用A1 引用样式中的单元格或单元格区域及进行属性更改和赋值。如例句: Sheets("Sheet1").Range("A1:D5").Font.Bold=True Sheets("Sheet1").Range("A1:D5").Value=10000 Range 对象既可表单个单元格,也可表单元格区域。下面说明 Range 对象最常用方法。 引用 含义 Range("A1") 单元格A1 Range("A1:B5") 从单元格 A1 到单元格 B5 的区域 Range("C5:D9,G9:H16") 多块选定区域 Range("A:A") A 列 Range("1:1") 第一行 Range("1:5") 从第一行到第五行的区域 Range("1:1,3:3,8:8") 第1、3和8行 Range("A:C") 从A列到C列的区域 Range("A:A,C:C,F:F") A、C和F列 Range("单元格区域名称") 命名的单元格区域 2) 用Cells 属性引用单元格 可用Cells 属性通过行列编号来引用单个单元格。下例中Cells(6,1) 返回Sheet1 上的单元格 A6,然后将Value 属性设置为行列编号,所以 Cells 属性非常适合单元格区域中循环且速度很快。如下例所示: Sub CC() Dim Counter As Integer For Counter =1 To 20 Worksheets("Sheet1").Cells(Counter,3).Value=Counter Next Counter End Sub 3) 用Rows 或 Columns 属性引用行列 可用Rows属性或Columns属性来处理整行或整列。下例中,用Row(1)返回Sheet1上的第一行,然后将单元格区域的Font对象的Bold属性设置为True. 如: Worksheets("Sheet1").Row(1).Font.Bold=True 下表举例说明了使用 Rows 和 Columns 属性的一些行和列的引用。 引用 含义 Row(1) 第一行 Rows 工作表中的所有行 Columns(1) 第一列 Columns("A") 第一列 Columns 工作表中的所有列 5)用括号[]引用单元格和区域 可用方括号A1 引用样式或命名区域括起来,作为Range 属性的快捷方式。这样就不必键入单词"Range"或使用引用,如下例所示: Worksheets(Sheet1").[A1:B5].ClearContents [MyRange].Value=30 6) 用offset 相对其他单元格来引用单元格 处理相对另一个单元格的某一单元格的常用方法是使用offset 属性。下例中,将位于活动工作表上活动单元格下一行和右边三列的单元格的内容设置为双下划线格式。 如: ActiveCell.Offset(1,3).Font.Underline=xlDouble 7) 用 Selection 属性引用活动区域 Select 方法激活工作表和工作表上的对象;而 Selection 属性返回代表活动工作簿中活动工作表上的当前选定区域的对象。在成功使用 Selection 属性之前,必须先激活或选定工作表,然后用 Select方法选定单元格区域(或其他对象)。 宏录制器经常创建使用 Select 方法和Selection属性的宏。下述 Sub 过程是用宏录制器创建的,该过程演示了 Select 方法和Selection 属性在一起使用的方法。 Sub Marco1() Sheets("Sheet1").Select Range("A1").Select ActiveCell.FormulaR1C1="Name" Range("B1").Select Active("A1:B1").Select Selection.Font.Bold=True End Sub 8) 区域中循环引用单元格方法 使用VBA 时,经常需要对某一个单元格区域内的每个单元格运行同一段语句。为达到这一目的,可组合循环语句和一个或多个方法来标识每个单元格,一次针对一个单元格,并执行该操作。 8.1) For ... Next 循环语句与 Cells 属性配合使用 使用 Cells 属性时,可用循环计数器(或其他变量或表达式) 来替代单元格索引编号.下例中变量 counter 代替行号.此过程单元格区域C1: C20中循环,将绝对值小于0.01单元都置为0. Sub RoundTab1() For Counter=1 To 20 If Abs(Cells(counter,3).value) <0.01 Then Cells(Counter,3)=0 Next End Sub
[此贴子已经被作者于2008-8-10 17:36:52编辑过] |