加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

[转载]VBA中Range的使用方法-Excel VBA学习

(2018-12-19 11:44:08)
标签:

转载

分类: VBA

VBA中Range的使用方法-Excel VBA学习

    我在编写实验室测试数据库时,需要实现一个功能:在一个报告输出的界面上输入一个测试编号,则和这个编号相关的数据从数据库中输出,并同时输出一个柱状图以直观地看出个数据的差异。

    前面数据输出都很容易,问题出在图形输出时,程序报告选择的区域错误,以下是代码:

ActiveChart.SetSourceData Source:=Sheet4.Range(Cells(1, 1), Cells(max, sampleNo + 1))

    我当时百思不得其解,最终在一本教材上找到了答案:当区域的开头和结尾为Cell时,没指定属性一般来说是指此单元格的值,把值放到range的括号,range的区域就不对了,当然要出错了。所以正确的代码应该是这样的:

ActiveChart.SetSourceData Source:=Sheet4.Range(Cells(1, 1).address, Cells(max, sampleNo + 1).address)

Range对象最有用的一些属性如下:
  * Address  本属性返回Range的当前位置。
  * Count   
本属性用于决定Range中单元格的数目。
  * Formula  本属性返回用于计算显示值的公式。
  * Offset   
本属性对于从一个Range移动到另一个Range非常有用。
  * Resize   
通过它可设置当前选中的Range的大小。
  * Value    返回Range的数值。

Range对象同样具有多种多样的方法,包括:
  * Activate  激活一个Range。
  * Clear     清除一个Range的内容。
  * Copy      将一个Range的内容复制到剪贴板。
  * Cut       将一个Range的内容剪切到剪贴板。
  * PasteSpecial  将剪贴板的内容粘贴到Range中。
  * Select    选择一个Range。
简单总结Range对象的一些常用属性和方法

1、Activate与Select

  试验下面的过程:

  Sub SelectAndActivate()
   Range("B3:E10").Select
   Range("C5").Activate
  End Sub

  Select与Activate

  Selection指单元格区域B3:E10,而ActiveCell则是单元格C5;ActiveCell代表单个的单元格,而Selection则可以代表单个单元格,也可以代表单元格区域。

2、Range属性

  可以使用Application对象的Range属性引用Range对象,如Application.Range(“B2”) ‘代表当前工作表中的单元格B2若引用当前工作表中的单元格,也可以忽略前面的Application对象。
  Range(“A1:D10”) ‘代表当前工作表中的单元格区域A1:D10
  Range(“A1:A10,C1:C10,E1:E10”) ‘代表当前工作表中非连续的三个区域组成的单元格区域
  Range属性也接受指向单元格区域对角的两个参数,如:
  Range(“A1”,”D10”) ‘代表单元格区域A1:D10
  当然,Range属性也接受单元格区域名称,如:
  Range(“Data”) ‘代表名为Data的数据区域Range属性的参数可以是对象也可以是字符串,如:Range(“A1”,Range(“LastCell”))

3、单元格引用的快捷方式

  可以在引用区域两侧加上方括号来快速引用单元格区域,如:
  [B2]
  [A1:D10]
  [A1:A10,C1:C10,E1:E10]
  [Data]
  但其引用的是绝对区域。
4、Cells属性

  可以使用Cells属性来引用Range对象。如:
  ActiveSheet.Cells
  Application.Cells ‘引用当前工作表中的所有单元格
  Cell(2,2)
  Cell(2,”B”) ‘引用单元格B2
  Range(Cells(1,1),Cells(10,5)) ‘引用单元格区域A1:E10
  若想在一个单元格区域中循环时,使用Cells属性是很方便的。
  也可以使用Cells属性进行相对引用,如:Range(“D10:G20”).Cells(2,3) ‘表示引用单元格区域D10:G20中第2行第3列的单元格,即单元格F11也可使用语句:Range(“D10”).Cells(2,3)达到同样的引用效果。

5、Offset属性

  Offset属性基于当前单元格按所给参数进行偏移,与Cells属性不同的是,它基于0即基准单元格为0,如:Range(“A10”).Cells(1,1)和Range(“A10”).Offset(0,0)都表示单元格A10当想引用于基准单元格区域同样大小的单元格区域时,则Offset属性是有用的。

6、Resize属性

  可使用Resize属性获取相对于原单元格区域左上角单元格指定大小的区域。

7、SpecialCells方法

SpecialCells方法对应于“定位条件”对话框

8、CurrentRegion属性

  使用CurrentRegion属性可以选取当前单元格所在区域,即周围是空行和空列所围成的矩形区域,等价于“Ctrl Shift *”快捷键。

9、End属性

  End属性所代表的操作等价于“Ctrl 方向箭”的操作,使用常量xlUp、xlDown、xlToLeft和xlToRight分别代表上、下、左、右箭。

10、Columns属性和Rows属性

  Columns属性和Rows属性分别返回单元格区域中的所有列和所有行。

11、Areas集合

  在多个非连续的单元格区域中使用Columns属性和Rows属性时,只是返回第一个区域的行或列,如:Range(“A1:B5,C6:D10,E11:F15”).Rows.Count
将返回5。此时应使用Areas集合来返回区域中每个块的地址

0

  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有