分享

vba

 zgqinghai 2021-10-10

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多