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