在VBA里,多個單元格的合集我們統(tǒng)稱為Range。Range對象可以包括1到多個單元格,如果只有一個單元格,也可以用cell對象來表示。所以說,cell也是一個特殊的range,可以應(yīng)用Range的方法。
按照之前面向?qū)ο笮偷姆椒?,我們從兩個方面來研究Range對象,先從Range對象的常用屬性開始。
所謂引用,大抵可以理解為Range類的一個實(shí)例化,也就是上回中說的,給人起名字的過程。實(shí)例化是面向?qū)ο笮途幊痰闹匾徊?,也是我們最先要掌握的?/p>
引用Range的方式,常見有以下幾種:
cells用來獲得指定行和列的單元格對象,也就是range對象。
主要的用法為 cells(行號,列號),如cells(1,1)可以得到A1單元格。
如果想要指定某個區(qū)域,可以直接使用range語句來引用。
表達(dá)單個區(qū)域
Range('a1:d5')'或者也可以Range('a1', 'd5')
表達(dá)多個區(qū)域
Range('a1:b2, c4:d5')
但注意,這種情況下不可以寫成:
Range('a1:b2', 'c4:d5')
以上這種寫法會直接選中a1到d5?。?!
表達(dá)多行和多列
Range('1:3')Range('a:d')
如果表達(dá)想選中單行和單列,則使用
Range('1:1')Range('a:a')
即可。
同時表達(dá)多行也多列
Range('1:4,A:C').Select
下面介紹以下常用的range屬性
用于選擇某個單元格的當(dāng)前區(qū)域。所謂當(dāng)前區(qū)域就是與當(dāng)前單元格相接的最大范圍。
Range('a1').CurrentRegion.select
注意
currentregion是通過值來判斷的,不同于usedrange。例如,即使有顏色填充,a1的currentregion仍然只是其本身。
用于表達(dá)range中的行和列。一般結(jié)合count方法使用,后續(xù)會詳細(xì)講解。
表示range的值,非常常用。
用于表達(dá)range在指定方向上的最邊緣的單元格,相當(dāng)于選中該單元格后按ctrl 加 各個方向的箭頭。方向參數(shù)有四個,分別為xlup,xldown,xltoleft和xltoright,代表上下左右。常用的方法如下:
Range('a65536').End(xlUp).Row '獲取最后一行的行數(shù)Range('iv1').End(xlToLeft).Column'獲取最后一列的列數(shù)
上面這種寫法,幾乎要成為約定俗成了,但是,由于07版以后的excel的行數(shù)已經(jīng)突破了65536行的限制,這時候怎么辦?
更新的方法如下:
ActiveSheet.UsedRange.Rows.Count'或者Cells(Rows.Count, 1).End(xlUp).Rowrows.count '可以得到當(dāng)前單元格最后一行,正如之前說的65536
對已有range合理地進(jìn)行位移和調(diào)整維度,而得到的新range。
offset
將目標(biāo)range在不改變尺寸的情況下進(jìn)行平移,向各個方向的位移由括號內(nèi)的參數(shù)決定。
Range('a1:b2,c3:d4').offset(1,1)
resize
用于把目標(biāo)區(qū)域重新調(diào)整大小,得到新的range。括號內(nèi)的參數(shù)為調(diào)整后的行數(shù)和列數(shù)
Range('a1:b2').Resize(3, 4)
這是Excel自帶函數(shù)中offset的后兩個參數(shù)。應(yīng)當(dāng)注意,range一定要是一個連續(xù)的區(qū)域。如下這種區(qū)域的resize會報(bào)錯
Range('a1:b2,c3:d4').Resize(2, 2)
range的引用
range的常用屬性
聯(lián)系客服