单元格对象(Range)大概是VBA代码中运用得最多的对象了,只要涉及到数据,最后总是离不开单元格对象。 Range对象可以是单个单元格,一个矩形的单元格区域或者是多个矩形单元格区域的联合。 Range对象是包含在Worksheet对象里。
如何引用单元格? 一、工作表上的所有单元格
不指定索引号的Cells属性 Worksheets(1).cells 返回指定工作表上代表所有单元格的Range对象。
二、使用A1表示方法引用单元格和区域 使用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 列
三、使用Range对象引用单元格 声明一个Range类型的对象变量,然后赋值引用,直接操作对象变量即可。 示例: Dim rg As Range Set rg = Worksheets("Sheet1").Range("A1:D8") With rg .Formula = "=RAND()" .Font.Bold = True .Font.Color = vbRed End With
四、使用索引号引用单元格 通过指定行列索引号,可以用Cells属性引用单个单元格。 Dim i As Byte, j As Byte, k As Byte For i = 1 To 56 j = (i - 1) \ 8 + 1 k = i Mod 8 If k = 0 Then k = 8 Cells(k, j * 2 - 1).Interior.ColorIndex = i Cells(k, j * 2).Value = i Next
五、使用快捷表示法引用单元格 可用方括号将A1引用样式或命名区域括起来,作为Range属性的快捷方式。 示例: Worksheets("Sheet1").[A1:B5].ClearContents [MyRange].Value= 30
六、引用相对于其他单元格的单元格 以相对于另一单元格的方法处理某一单元格的常用方法是使用Offset属性。 某天在论坛答题时发现有童鞋在Change事件这样引用单元格: a = Target.Row b =Target.Column Cells(a, b + 6)= (Cells(a, b) - Cells(a, b - 1)) / (Cells(a, b - 1) * 1.187) 其实这里直接用Offset就省很多事了,又简洁。 示例: ActiveCell.Offset(1,3).Font.Underline = xlDouble
七、引用多个区域 使用Range属性和Union方法可以引用任意区域组合; 使用Areas属性可引用工作表上一组选定的区域。 通过在两个或多个引用之间插入逗号,可使用Range属性引用多个区域。 示例: Worksheets("Sheet1").Range("C5:D9,G9:H16,B14:D18").ClearContents Range("MyRange,YourRange, HisRange").ClearContents’命名法 使用Union方法可以将多个区域组合到一个Range对象当中。 示例: Dim r1 As Range, r2 As Range,myMultipleRange As Range Set r1 =Sheets("Sheet1").Range("A1:B2") Set r2 =Sheets("Sheet1").Range("C3:D4") Set myMultipleRange = Union(r1, r2) myMultipleRange.Font.Bold = True 使用 Areas 属性引用选定的单元格区域或多块选定区域中的区域集合。 示例: If Selection.Areas.Count > 1 Then MsgBox "选择了多个单元格区域" End If
八、引用命名区域 用名称比用 A1 样式记号更容易标识单元格区域。
若要命名选定的单元格区域,请单击编辑栏左端的名称框,键入名称,再按 Enter。 示例: Range("MyBook.xls!MyRange").Font.Italic= True 引用“MyBook.xls”工作簿中名为“MyRange”的区域。 Range("[Report.xls]Sheet1!Sales").BorderAroundWeight:=xlthin 引用“Report.xls”工作簿中特定于工作表的区域“Sheet1!Sales”。
九、引用行和列 可用 Rows 属性或 Columns 属性来处理整行或整列。
这两个属性返回代表单元格区域的 Range 对象。 示例: Rows(1) ‘第一行 Rows ‘工作表上所有的行 Columns(1) ‘第一列 Columns("A") ‘第一列 Columns ‘工作表上所有的列
需要注意的是,不同工作表的单元格和区域是无法用Range属性或unon方法组合在一块。 另外,很多新手在引用单元格(特别是跨簿跨表)时容易漏掉限定对象(工作簿,工作表)。
|