77范文网 - 专业文章范例文档资料分享平台

Range对象应用大全

来源:网络收集 时间:2020-06-06 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

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(\).Sheets(\).Range(\) _ .Font.Bold = True End Sub

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 列。 下面是给单元格赋值的几个例子。 示例1:

Sub test1()

Worksheets(\).Range(\).Value = 22 MsgBox \工作表Sheet1内单元格A5中的值为\ _ & Worksheets(\).Range(\).Value End Sub

示例2:

Sub test2()

Worksheets(\).Range(\).Value = _ Worksheets(\).Range(\).Value MsgBox \现在A1单元格中的值也为\ & _

Worksheets(\).Range(\).Value End Sub

示例3:

Sub test3()

MsgBox \用公式填充单元格,本例为随机数公式\ Range(\).Formula = \ End Sub

示例4:

Sub test4()

Worksheets(1).Cells(1, 1).Value = 24 MsgBox \现在单元格A1的值为24\ End Sub

示例5:

Sub test5()

MsgBox \给单元格设置公式,求B2至B5单元格区域之和\ ActiveSheet.Cells(2, 1).Formula = \ End Sub

示例6:

Sub test6()

MsgBox \设置单元格C5中的公式.\

Worksheets(1).Range(\).Cells(1, 1).Formula = \ End Sub

示例7:

Sub test7()

MsgBox \给命名区域赋值.\

ActiveSheet.Range(\).Value = 1 End 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(\).Cells(6, 1).Value = 10 End Sub

因为可以用变量替代编号,所以Cells属性非常适合于在单元格区域中循环,如下例中所示。

Sub CycleThrough()

Dim Counter As Integer For Counter = 1 To 20

Worksheets(\).Cells(Counter, 3).Value = Counter Next Counter End 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(\).Select

Selection.Resize(Selection.Rows.Count + 5, Selection.Columns.Count).Select

例2:选择名为“Database”区域下方4行右侧3列的一个区域,然后扩展2行和1列,可以使用下面的代码:

Range(\).Select

Selection.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(\).Offset(5, 4).Select

再举一些例子。

例如,要选择与名为“Test”的区域大小相同但在该区域下方4行右侧3列的一个区域,可以使用下面的代码:

ActiveSheet.Range(\).Offset(4, 3).Select

如果该命名区域不在当前工作表中,可以先激活该工作表,然后再选择,如下面的代码:

Sheets(\).Activate

ActiveSheet.Range(\).Offset(4, 3).Select

下面的例子计算移动平均值:

Sub MovingAvg() Dim rng As Range Dim lngRow As Long Set rng = Range(\) For lngRow = 3 To 12

Cells(lngRow, \).Value = WorksheetFunction.Sum(rng) / 3 Set rng = rng.Offset(1, 0) Next lngRow End Sub

上述代码首先将B列中的前3个单元格设置为一个单元格区域,计算其平均值,并放置在单元格C3中。接着,Offset属性将单元格区域下移一行但仍在B列,计算单元格区域B2:B4的平均值,并将结果放置到单元格C4。代码重复上述过程直到单元格B12。

[应用6]在当前工作表中引用交叉区域

可以使用Intersect方法,例如:

Intersect(Range(\), Range(\))

表示单元格区域D5:E6,即单元格区域C3:E6与D5:F8相重迭的区域。

又如,要选择名为“Test”和“Sample”的两个区域的交叉区域,可以使用下面的代码:

Application.Intersect(Range(\), Range(\)).Select

注意,两个区域必须在同一工作表中。

注意,如果两个区域不存在交叉,那么该方法返回Nothing。

例如,下面的代码选择两个命名区域的交叉部分,如果不存在交叉,则显示一条消息。

Sub IntersectSample()

Worksheets(\).Activate

Set Intersect = Application.Intersect(Range(\), Range(\)) If Intersect Is Nothing Then MsgBox \不存在交叉区域.\ Else

Intersect.Select End If End Sub

[应用7]在当前工作表中引用多个区域

(1)可以使用Union方法,将多个区域组合到一个Range对象中。例如:

Union(Range(\), Range(\))

表示单元格区域C3:D4和E5:F6所组成的区域。

Union方法可以将多个非连续区域连接起来成为一个区域,从而可以实现对多个非连续区域一起进行操作。

(2)也可以使用下面的代码,即通过在两个或多个引用之间插入逗号,可使用Range属性引用多个区域:

Range(\)

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Range对象应用大全在线全文阅读。

Range对象应用大全.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/1094375.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: