资源预览内容
第1页 / 共20页
第2页 / 共20页
第3页 / 共20页
第4页 / 共20页
第5页 / 共20页
第6页 / 共20页
第7页 / 共20页
第8页 / 共20页
第9页 / 共20页
第10页 / 共20页
亲,该文档总共20页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
Range对象应用大全(1)-应用基础2009年06月27日, 8:51 下午(4人投票, 平均:4.75out of 5)引子:本文以MSDN中Developers Guide to the Excel 2007 Range Object一文为线索,整理并归纳了自已以前学习Range对象时的一系列学习笔记。辑录于此,供有兴趣的朋友参考。毫无疑问,Range对象是Excel对象模型中最重要的对象,几乎所有与工作表有关的实质性操作都涉及到Range对象,可以说,熟悉并熟练运用Range对象是掌握Excel VBA编程的关键。下面,让我们逐步了解、熟悉并开始使用Range对象吧。在VBA代码中引用或选择Excel工作表的单元格或单元格区域在使用Excel VBA编程时,我们通常需要频繁地引用单元格区域,然后再使用相应的属性和方法对区域进行操作。所谓单元格区域,指的是单个的单元格、或者包含连续或非连续的多个单元格组成的区域、或者是整行、整列、甚至是三维单元格区域等。应用1引用当前工作表中的单个单元格(例如引用单元格C3)可以使用下面列举的任一方式引用当前工作表中的单元格(C3):(1)Range(“C3)(2)C3(3)Cells(3, 3)(4)Cells(3, “C”)(5)Range(“C4).Offset(-1)Range(“D3).Offset(, -1)Range(“A1).Offset(2, 2)(6)若C3为当前单元格,则可使用:ActiveCell(7)若将C3单元格命名为“Range1”,则可使用:Range(“Range1)或Range1(8)Cells(4, 3).Offset(-1)(9)Range(“A1).Range(“C3)此外,可以使用下面的代码选择当前工作表中的单元格D5:ActiveSheet.Cells(5, 4).Select或:ActiveSheet.Range(“D5).Select应用2引用当前工作表中的B2:D6单元格区域可以使用下面列举的任一方式引用当前工作表中的单元格区域B2:D6:(1)Range(“B2:D6”)(2)Range(“B2, “D6)(3)B2:D6(4)Range(Range(“B2), Range(“D6)(5)Range(Cells(2, 2), Cells(6, 4)(6)若将B2:D6区域命名为“MyRange”,则又可以使用下面的语句引用该区域: Range(“MyRange”) MyRange(7)Range(“B2).Resize(5, 3)(8)Range(“A1:C5).Offset(1, 1)(9)若单元格B2为当前单元格,则可使用语句:Range(ActiveCell, ActiveCell.Offset(4, 2)(10)若单元格D6为当前单元格,则可使用语句:Range(“B2, ActiveCell)下面的过程将单元格区域 A1:D5 的字体设置为加粗。Sub FormatRange() Workbooks(Book1).Sheets(Sheet1).Range(A1:D5) _ .Font.Bold = TrueEnd SubRange(“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 列。下面是给单元格赋值的几个例子。示例1:Sub test1() Worksheets(Sheet1).Range(A5).Value = 22 MsgBox 工作表Sheet1内单元格A5中的值为 _ & Worksheets(Sheet1).Range(A5).ValueEnd Sub示例2:Sub test2() Worksheets(Sheet1).Range(A1).Value = _ Worksheets(Sheet1).Range(A5).Value MsgBox 现在A1单元格中的值也为 & _ Worksheets(Sheet1).Range(A5).ValueEnd Sub示例3:Sub test3() MsgBox 用公式填充单元格,本例为随机数公式 Range(A1:H8).Formula = =Rand()End Sub示例4:Sub test4() Worksheets(1).Cells(1, 1).Value = 24 MsgBox 现在单元格A1的值为24End Sub示例5:Sub test5() MsgBox 给单元格设置公式,求B2至B5单元格区域之和 ActiveSheet.Cells(2, 1).Formula = =Sum(B1:B5)End Sub示例6:Sub test6() MsgBox 设置单元格C5中的公式. Worksheets(1).Range(C5:C10).Cells(1, 1).Formula = =Rand()End Sub示例7:Sub test7() MsgBox 给命名区域赋值. ActiveSheet.Range(MyCell).Value = 1End Sub其中,MyCell为单元格区域的名称。应用3引用当前工作表中不确定的单元格区域有时,我们需要在代码中依次获取工作表中特定区域内的单元格,这通常可以采取下面的几种方式:(1)Range(“A” & i)(2)Range(“A” & i & “:C” & i)(3)Cells(i,1)(4)Cells(i,j)其中,i、j为变量,在循环语句中指定i和j的范围后,依次获取相应单元格。在下例中,Cells(6,1)返回Sheet1上的单元格A6,然后将Value属性设置为 10。Sub EnterValue() Worksheets(Sheet1).Cells(6, 1).Value = 10End Sub因为可以用变量替代编号,所以Cells属性非常适合于在单元格区域中循环,如下例中所示。Sub CycleThrough() Dim Counter As Integer For Counter = 1 To 20 Worksheets(Sheet1).Cells(Counter, 3).Value = Counter Next CounterEnd Sub如果要同时更改某个区域中所有单元格的属性(或将方法应用于该区域中的所有单元格),建议使用Range属性。应用4扩展引用当前工作表中的单元格区域可以使用Resize属性,例如:(1)ActiveCell.Resize(4, 4),表示自当前单元格开始创建一个4行4列的区域。(2)Range(“B2).Resize(2, 2),表示创建B2:C3单元格区域。(3)Range(“B2).Resize(2),表示创建B2:B3单元格区域。(4)Range(“B2).Resize(, 2),表示创建B2:C2单元格区域。如果是在一个单元格区域(如B3:E6),或者一个命名区域中(如将单元格区域B3:E6命名为“MyRange”)使用Resize属性,则只是相对于单元格区域左上角单元格扩展区域,例如:代码Range(“C3:E6).Resize(, 2),表示单元格区域C3:D6,并且扩展的单元格区域可以不在原单元格区域内。因此,可以知道Resize属性是相对于当前活动单元格或某单元格区域中左上角单元格按指定的行数或列数扩展单元格区域。再举一些例子。例1:要选择当前工作表中名为“Database”区域,然后将该区域向下扩展5行,可以使用下面的代码:Range(Database).SelectSelection.Resize(Selection.Rows.Count + 5, Selection.Columns.Count).Select例2:选择名为“Database”区域下方4行右侧3列的一个区域,然后扩展2行和1列,可以使用下面的代码:Range(Database).SelectSelection.Offset(4, 3).Resize(Selection.Rows.Count + 2, Selection.Columns.Count + 1).Select应用5在当前工作表中基于当前单元格区域或指定单元格区域处理其它单元格区域可以使用Offset属性,例如:(1)Range(“A1).Offset(2, 2),表示单元格C3。(2)ActiveCell.Offset(, 1),表示当前单元格下一列的单元格。(3)ActiveCell.Offset(1),表示当前单元格下一行的单元格。(4)Range(“C3:D5).Offset(, 1),表示单元格区域D3:E5,即将整个区域偏移一列。从上面的代码示例可知,Offset属性从所指定的单元格开始按指定的行数和列数偏移,从而到达目的单元格,但偏移的行数和列数不包括指定单元格本身。正值表示向下和向右,负值表示向上和向左,零值则是指当前单元格。例如,要选择距当前单元格下面5行左侧4列的单元格,可以使用下面的代码:ActiveCell.Offset(5, -4).Select要选择距当前单元格上方2行右侧3列的单元格,可以使用下面的代码:ActiveCell.Offset(-2, 3).Select注意:一定要保证当前单元格与所选单元格之间的距离在工作表范围内,否则会出错。又如,要选择距单元格C7下方5行右侧4列的单元格,可以使用下面的代码:ActiveSheet.Cells(7, 3).Offset(5, 4).Select或:ActiveSheet.Range(C7).Offset(5, 4).Select再举一些例子。例如,要选择与名为“Test”的区域大小相同但在该区域下方4行右侧3列的一个区域,可以使用下面的代码:ActiveSheet.Range(Test).Offset(4, 3).Select如果该命名区域不在当前工作表中,可以先激活该工作表,然后再选择,如下面的代码:Sheets(Sheet3).ActivateActiveSheet.Range(Test).Offset(4, 3).Select下面的例子计算移动平均值:Sub MovingAvg() Dim rng As Range Dim lngRow As Long Set rng = Range(B1:B3) For lngRow = 3 To 12 Cells(lngRow, C).Value =
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号