vba-Range和Cells的理解和應用


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM