1. 单元格行号列标里面有变量时的表达方法
Range("A" & i)和Cells(i,1)比较常用,Cells(i,"A")这种引用方法一般是当列标号较大(BJ,IV),不易计算时,可以直接用双引号加列标作为第二参数)
2. Range、Cells的差异
|
Range(A1) |
Cells(1,1) |
[a1] |
可以引用的对象 |
单元格、区域、多区域、整行、整列 |
单元格 |
单元格、区域、多区域、整行、整列 |
自动列出成员 |
支持 |
不支持 |
不支持 |
用于代码循环 |
行循环 |
行循环、列循环 |
不支持 |
输入简便性 |
差 |
差 |
好 |
支持参数 |
索引号、Item和Cells |
Item和Cells |
不支持 |
从以上比较中可以发现,Cells()的优势在于代码循环中可以进行行与列循环,缺点是无法引用区域;Range的优势在于支持自动列出成员,支持行循环和参数,缺点是书写时不够方便、不支持列标循环;而[A1]方式的优势在于书写方便,可以引用区域,缺点是不支持循环和不能自动列出成员。
其中需要强调的有三点:支持自动列出成员和循环。
(1)自动列出成员
对象是否支持自动列出成员是很重要的一个特点,在编写代码时,可能程序员对某些属性或者方法不够熟悉,需要借助自动列出成员来快速完成。那么需要记住用何种方式可以调用其成员。
在单元格的三种引用方式中,仅仅第一种支持自动列出成员,在代码窗口录入“[A1].”或者“Cells(1,1)”后不会有任何反应。
(2)所谓支持参数是指访问其子集。访问区域的子集有三种方法。例如Range(“A1:A10”)第二个子集,那么有以下三种方式:
Range(“A1:A10”).Item(2)
Range(“A1:A10”).Cells (2)
Range(“A1:A10”) (2)
而[A1]方式引用单元格时仅仅支持两种方式引用子集。例如:
[A1:A10]. Item(2)
[A1:A10]. Cells (2)
而“[A1:A10] (2)”,即删除圆点,则是非法引用
“Cells(1:1)”表示访问区域中第一个子集,如果不带前置对象,则默认为当前工作表中A1;如果前置Range对象,那么表示该对区域的第一个单元格,可能是A1,也可以是A1以外的任意单元格。
(3)支持循环
Sub tttt()
Application.ScreenUpdating = False
For j = 1 To 5
start1 = Timer
For i = 1 To 20000
Range("A" & i) = i
Next i
Range("B" & j) = Timer - start1
Next j
For j = 1 To 5
start1 = Timer
For i = 1 To 20000
Cells(i, 1) = i
Next i
Cells(j, 3) = Timer - start1
Next j
Application.ScreenUpdating = True
End Sub
上面的代码里分别采用了Range和Cells引用方法,分别运行5次、每次从1运行到20000,可以看出Cells方法要比Range方法稍快一些。
①Range属性选择单元格
1.选择单个单元格(例如A5)
Range("A5").Select
2.选择一个单元格区域(例如A6:A10)
Range("A6:A10").Select
3.选择一些不相邻的单元格(例如A1,B6,C8)
Range("A1,B6,C8").Select
4.选择一些不相邻的单元格和单元格区域(例如A11:D11,B7,C9)
Range("A11:D11,B7,C9").Select
②Cells属性选择单元格
1.选择单个单元格(例如A5)
Cells(5,1).Select
Cells(5,”A”).Select
2.选择一个单元格区域(例如A6:A10)
Range(Cells(6,1),Cells(10,1)).Select
3.选择工作表中的所有单元格
Cells.Select
VBA里Range,cells,offset,end 的区别
一.Range属性
1.选择单个单元格(例如A5)
Range("A5").Select
2.选择一个单元格区域(例如A6:A10)
Range("A6:A10").Select
3.选择一些不相邻的单元格(例如A1,B6,C8)
Range("A1,B6,C8").Select
4.选择一些不相邻的单元格和单元格区域(例如A11:D11,B7,C9)
Range("A11:D11,B7,C9").Select
二.Cells属性
1.选择单个单元格(例如A5)
Cells(5,1).Select Cells(5,A).Select
2.选择一个单元格区域(例如A6:A10)
Range(Cells(6,1),Cells(10,1)).Select
3.选择工作表中的所有单元格
Cells.Select
三.Offset属性
1.选择单元格A1下面一行和右边三列的单元格
Range("A1").Offset(1,3).Select
2.选择单元格D15上面两行和左边一列的单元格
Range("D15").Offset(-2,-1).Select
3.选择同列单元格(上一行)
ActiveCell.Offset(-1,0).Select
4.重新选取区域
ActiveCell.Offset(2,2).Resize(2,4).Select
四.END属性(移动到连续有内容的单元格)
1.选择任何行的最后一个单元格
ActiveCell.End(xlToRight).Select
2.选择任何行的最前一个单元格
ActiveCell.End(xlToLeft).Select
3.选择任何列的最后一个单元格
ActiveCell.End(xlDown).Select
1.选择任何列的最前一个单元格
ActiveCell.End(xlUp).Select