第三节 单元格和区域操作 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 属性设置为 10。如:Worksheets("Sheet1").Cells(6, 1).Value = 10 因为可用变量替代行列编号,所以 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 属性来处理整行或整列。下例中,用 Rows(1) 返回 Sheet1 上的第一行,然后将单元格区域的 Font 对象的 Bold 属性设置为 True。如:Worksheets("Sheet1").Rows(1).Font.Bold = True 下表举例说明了使用 Rows 和 Columns 属性的一些行和列的引用。 引用 含义 Rows(1) 第一行 Rows 工作表上所有的行 Columns(1) 第一列 Columns("A") 第一列 Columns 工作表上所有的列 4)用Union方法合并区域后引用 若要同时处理若干行或列及区域,请创建一个对象变量并使用 Union 方法,将对多个区域组合起来。下例将活动工作簿中第一张工作表上的第一行、第三行和第五行的字体设置为加粗。 Sub SeveralRows() Worksheets("Sheet1").Activate Dim myUnion As Range Set myUnion = Union(Rows(1), Rows(3), Rows(5)) myUnion.Font.Bold = True End Sub 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 Macro1() Sheets("Sheet1").Select Range("A1").Select ActiveCell.FormulaR1C1 = "Name" Range("B1").Select ActiveCell.FormulaR1C1 = "Address" Range("A1:B1").Select Selection.Font.Bold = True End Sub 7)区域中循环引用单元格方法 使用VBA时,经常需要对某一单元格区域内的每个单元格运行同一段语句。为达到这一目的,可组合循环语句和一个或多个方法来标识每个单元格,一次针对一个单元格,并执行该操作。 7.1 For...Next 循环语句与 Cells 属性配合使用 使用 Cells 属性时,可用循环计数器(或其他变量或表达式)来替代单元格索引编号。下例中变量 counter 代替行号。此过程在单元格区域 C1:C20 中循环,将绝对值小于0.01的单元都置为 0。 Sub RoundToZero1() For Counter = 1 To 20 If Abs(Cells(counter,3).value) < 0.01 Then Cells(counter,3) = 0 Next End Sub 7.2 For Each...Next 循环语句和Range 属性配合使用 示例如下: Sub RoundToZero2() For Each c In Worksheets("Sheet1").Range("A1:D10").Cells If Abs(c.Value) < 0.01 Then c.Value = 0 Next End Sub 二、如何处理单元格和区域 1 处理三维区域 如果要处理若干工作表上相同位置的单元格区域,可用 Array 函数选定两张或多张工作表。下例设置三维单元格区域的边框格式。 Sub FormatSheets() Sheets (Array("Sheet2", "Sheet3", "Sheet5")).Select Range("A1:H1").Select Selection.Borders(xlBottom).LineStyle = xlDouble End Sub 2 处理活动单元格 ActiveCell 属性返回代表活动单元格的 Range 对象。可对活动单元格应用 Range 对象的任何属性和方法,如下例所示。 Sub SetValue() Worksheets("Sheet1").Activate ActiveCell.Value = 35 End Sub 注意 只有活动单元格所在的工作表处于活动状态时,才能处理该活动单元格。 3 选择活动单元格周围的单元格 CurrentRegion 属性返回由空白行和空白列所包围的单元格区域。下例中,选定区域扩充到与活动单元格相邻的包含数据的单元格中,然后用“货币”样式设置该区域的格式。 Sub Region() Worksheets("Sheet1").Activate ActiveCell.CurrentRegion.Select Selection.Style = "Currency" End Sub 4 单元格和区域赋值 用赋值号 = 赋值,如给A1赋值为10:Range(A1).Value=10 (由于Value是默认属性,所以可以直接省略) 区域赋值,如Range(A1:D5)=10 5 单元格和区域赋予公式进行计算 把公式字符串赋予给单元格或区域的Formula属性,如下例: 注意一点是公式字符串中要有开头的等号=。 Sub EnterFormula() Worksheets("Sheet1").Range("D6").Formula = "=SUM(D2:D5)" End Sub |