Excel单元格引用、区域的引用,在VBA编程中,有着重要的意义。掌握单元格、区域的引用方法,可方便我们对数据进行相应的处理。下面,是单元格、区域的引用方法之总结,希望对您有帮助。
①用范围来引用单元格及区域
可使用 Range 属性来引用 A1 引用样式中的单元格或单元格区域。下述子程序将单元格区域 A1:D5 的字体设置为加粗。
Workbooks("Book2").Sheets("Sheet2").Range("A1:D5") .Font.Bold = True
下表演示了使用 Range 属性的一些 A1 样式引用。
引用 含义
----------------------------------
Range("A1") 单元格 A1
Range("A1:B5") 从单元格 A1 到单元格 B5 的区域
Range("C5:D9,G9:H16") 多块选定区域
Range("A:A") A 列
Range("1:1") 第一行
Range("A:C") 从 A 列到 C 列的区域
Range("1:5") 从第一行到第五行的区域
Range("1:1,3:3,8:8") 第 1、3 和 8 行
Range("A:A,C:C,F:F") A 、C 和 F 列
②用编号引用单元格
通过使用行列编号,可用 Cells 属性来引用单个单元格。该属性返回代表单个单元格的 Range 对象。下例中,Cells(6,1) 返回 Sheet1 上的单元格 A6,然后将 Value 属性设置为 10。
Worksheets("Sheet1").Cells(6, 1).Value = 10
因为可用变量替代编号,所以 Cells 属性非常适合于在单元格区域中循环,如下例所示。
Dim Counter As Integer
For Counter = 1 To 20
Worksheets("Sheet1").Cells(Counter, 3).Value = Counter
Next Counter
注意 如果要同时更改某一单元格区域中所有单元格的属性或对其应用方法,可使用 Range 属性。
③引用行和列
可用 Rows 属性或 Columns 属性来处理整行或整列。这两个属性返回代表单元格区域的 Range 对象。下例中,用 Rows(1) 返回 Sheet1 上的第一行,然后将单元格区域的 Font 对象的 Bold 属性设置为 True。
Worksheets("Sheet1").Rows(1).Font.Bold = True
下表举例说明了使用 Rows 和 Columns 属性的一些行和列的引用。
引用 含义
------------------------
Rows(1) 第一行
Rows 工作表上所有的行
Columns(1) 第一列
Columns("A") 第一列
Columns 工作表上所有的列
若要同时处理若干行或列,请创建一个对象变量并使用 Union 方法,将对 Rows 属性或 Columns 属性的多个调用组合起来。下例将活动工作簿中第一张工作表上的第一行、第三行和第五行的字体设置为加粗。
Worksheets("Sheet1").Activate
Dim myUnion As Range
Set myUnion = Union(Rows(1), Rows(3), Rows(5))
myUnion.Font.Bold = True
④用快捷记号引用单元格
可用方括号将 A1 引用样式或命名区域括起来,作为 Range 属性的快捷方式。这样就不必键入单词“Range”或使用引号,如下例所示。
Worksheets("Sheet1").[A1:B5].ClearContents
[MyRange].Value = 30
⑤引用命名区域
用名称比用 A1 样式记号更容易标识单元格区域。若要命名选定的单元格区域,请单击编辑栏左端的名称框,键入名称,再按 Enter。
⑥引用命名区域
下例引用了名为“MyBook.xls”的工作簿中的名为“MyRange”的单元格区域。
Range("MyBook.xls!MyRange").Font.Italic = True
下例引用名为“Report.xls”的工作簿中的特定工作表单元格区域“Sheet1!Sales”。
Range("[Report.xls]Sheet1!Sales").BorderAround Weight:=xlthin
若要选定命名区域,请用 GoTo 方法,该方法将激活工作簿和工作表,然后选定该区域。
Application.Goto Reference:="MyBook.xls!MyRange"
Selection.ClearContents
下例显示对于活动工作簿将如何编写相同的过程。
Application.Goto Reference:="MyRange"
Selection.ClearContents
在命名区域中的单元格上循环
下例用 For Each...Next 循环语句在命名区域中的每一个单元格上循环。如果该区域中的任一单元格的值超过 limit 的值,就将该单元格的颜色更改为黄色。
Const Limit As Integer = 25
For Each c In Range("MyRange")
If c.Value > Limit Then
c.Interior.ColorIndex = 27
End If
Next c
接下篇…